![](/img/trans.png)
[英]How to exclude file extensions in the output filelist.txt, within a batch “dir” script in CMD
[英]batch dir output including concatenation to a txt file
我有一个目录,希望将用单引号引起来的子文件夹名称(例如:“ folder_1”,“ folder2”,“ folder 3”)输出到txt文件中,并在每个引号后加一个逗号。
基于解决方案@ 如何连接Windows批处理文件中的字符串? 我设法提出了以下批处理文件:
@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'
-需要用双引号引起来的每个子文件夹名称(包括空格),后跟逗号。 如果可能的话,我也希望每个文件夹都放在单独的行中,并且在最后一个文件夹中不要使用逗号。
为了处理丢失的字符,您在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
行中, %*
表示“所有参数”。 您不能在此处使用%1
,因为同样,CMD会在空格处拆分参数。 要了解有关CMD参数的更多信息,请参见http://ss64.com/nt/syntax-args.html
保留空格的另一种方法是在call :concat "%%i"
的变量周围加上引号,这可以防止CMD拆分参数。 然后在子功能中使用%~1
代替%*
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.