我希望使用一个分隔符将dir /b命令行输出放在一行中。
例如:
的输出
如何在批处理编程中实现此操作。
dir c:\test
file1
file2
file3
file4
I want it as
file1;file2;file3;file4
如何在批处理编程中实现此操作。
dir c:\test
file1
file2
file3
file4
I want it as
file1;file2;file3;file4
@echo off
setlocal enabledelayedexpansion enableextensions
set LIST=
for %%x in (*) do set LIST=!LIST!;%%x
echo %LIST:~1%
然而,这种方法将不会包含文件名中包含分号;
的情况。但是,以下方法可以实现:
@echo off
setlocal enabledelayedexpansion enableextensions
set LIST=
for %%x in (*) do (
echo %%x|findstr ";">nul 2>&1
if errorlevel 1 (set LIST=!LIST!;%%x) else (set LIST=!LIST!;"%%x")
)
echo %LIST:~1%
可以通过像这样的Python脚本进行管道传输:
import sys
print ';'.join(sys.stdin.read().split())
在你的批处理文件中:
dir /b | thatscriptjustabovehere.py
dir /a:d /b с:\folder\ | sort > %file%
相同的结果。 - Dmitrij Holkinc:\folder\*
中的每个文件,执行...但这当然不会排序。 - Joeyfor /f %%x in ('dir C:\folder /a:d /b') do [...]
如果您想了解更多关于“for”的信息,请键入for/?
。 - Alien426