在批处理文件编程中,使用dir /b命令输出并在一行中添加DELIMITER。

4
我希望使用一个分隔符将dir /b命令行输出放在一行中。 例如:

的输出
dir c:\test 
file1
file2
file3
file4

I want it as

file1;file2;file3;file4

如何在批处理编程中实现此操作。
2个回答

6
@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%

但是dir命令在哪里?我得到了result factor.log;session.log,这是什么? - Dmitrij Holkin
1
不需要使用“dir”命令,因为“for”循环已经遍历了文件。 - Joey
但是如何指定所需的文件夹?并且在文本文件中获得与 dir /a:d /b с:\folder\ | sort > %file% 相同的结果。 - Dmitrij Holkin
对于 c:\folder\* 中的每个文件,执行...但这当然不会排序。 - Joey
for /f %%x in ('dir C:\folder /a:d /b') do [...] 如果您想了解更多关于“for”的信息,请键入 for/? - Alien426

0

可以通过像这样的Python脚本进行管道传输:

import sys
print ';'.join(sys.stdin.read().split())

在你的批处理文件中:

dir /b | thatscriptjustabovehere.py

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接