批处理目录输出,包括连接到 txt 文件
batch dir output including concatenation to a txt file
我有一个目录,我想输出子文件夹名称(例如:"folder_1" "folder2" "folder 3"),用单引号括起来,后面跟着一个逗号,进入一个 txt 文件。
基于@How to concatenate strings in a Windows batch file? 的解决方案,我设法提出了以下批处理文件:
@echo off
set myvar='
for /f %%i in ('dir /b /o:n /ad') DO call :concat %%i
echo %myvar% >>test.txt
goto :eof
:concat
set myvar=%myvar%%1',
goto :eof
生成包含输出的 .txt 文件:
'folder_1', folder2', folder',
如何让输出看起来更像这样:
'folder_1',
'folder2',
'folder 3'
--需要每个子文件夹名称(包括 space/s)用单引号括起来,后跟逗号。如果可能的话,我还希望每个文件夹都单独一行,最后一个文件夹不要有逗号。
为了处理缺失的字符,您在 for
语句中遗漏了一件事。
for /f "tokens=*" %%i in ('dir /b /o:n /ad') DO call :concat %%i
"tokens=*"
部分告诉 for
将整行视为一个变量。默认情况下,for
会将每一行拆分为空格上的单独变量,这会导致您只获得每行的第一个单词
要解决单行问题,您需要发出多个 echo
语句。现在,您的代码正在将所有内容收集到一个变量中,然后将其作为一行回显。相反,您可以通过将 echo 移动到您的 :concat
子例程中,每次通过循环向文件追加一行。
for /f "tokens=*" %%i in ('dir /b /o:n /ad') DO call :concat %%i
goto :eof
:concat
echo '%*', >>test.txt
goto :eof
在echo
行中,%*
表示"all of the arguments"。您不能在此处使用 %1
,因为 CMD 再次将参数拆分为空格。要了解有关 CMD 参数的更多信息,请参阅 http://ss64.com/nt/syntax-args.html
另一种保留空格的方法是在 call :concat "%%i"
中的变量周围加上引号,这样可以防止 CMD 拆分参数。然后在子函数中使用 %~1
而不是 %*
.
我有一个目录,我想输出子文件夹名称(例如:"folder_1" "folder2" "folder 3"),用单引号括起来,后面跟着一个逗号,进入一个 txt 文件。
基于@How to concatenate strings in a Windows batch file? 的解决方案,我设法提出了以下批处理文件:
@echo off
set myvar='
for /f %%i in ('dir /b /o:n /ad') DO call :concat %%i
echo %myvar% >>test.txt
goto :eof
:concat
set myvar=%myvar%%1',
goto :eof
生成包含输出的 .txt 文件:
'folder_1', folder2', folder',
如何让输出看起来更像这样:
'folder_1',
'folder2',
'folder 3'
--需要每个子文件夹名称(包括 space/s)用单引号括起来,后跟逗号。如果可能的话,我还希望每个文件夹都单独一行,最后一个文件夹不要有逗号。
为了处理缺失的字符,您在 for
语句中遗漏了一件事。
for /f "tokens=*" %%i in ('dir /b /o:n /ad') DO call :concat %%i
"tokens=*"
部分告诉 for
将整行视为一个变量。默认情况下,for
会将每一行拆分为空格上的单独变量,这会导致您只获得每行的第一个单词
要解决单行问题,您需要发出多个 echo
语句。现在,您的代码正在将所有内容收集到一个变量中,然后将其作为一行回显。相反,您可以通过将 echo 移动到您的 :concat
子例程中,每次通过循环向文件追加一行。
for /f "tokens=*" %%i in ('dir /b /o:n /ad') DO call :concat %%i
goto :eof
:concat
echo '%*', >>test.txt
goto :eof
在echo
行中,%*
表示"all of the arguments"。您不能在此处使用 %1
,因为 CMD 再次将参数拆分为空格。要了解有关 CMD 参数的更多信息,请参阅 http://ss64.com/nt/syntax-args.html
另一种保留空格的方法是在 call :concat "%%i"
中的变量周围加上引号,这样可以防止 CMD 拆分参数。然后在子函数中使用 %~1
而不是 %*
.