如何创建在目录中的每个文件夹中创建文本文件的脚本? (Windows批处理)

时间:2016-07-27 18:33:38

标签: batch-file command-prompt

基本上,假设我在目录中有以下文件夹:

test_folder_1

test_folder_2

我还有一个文本文件,其中包含该目录中所有文件夹的列表。

如何创建一个脚本,在目录的所有文件夹中创建一个文本文件test.txt? (test_folder_1和test_folder_2)?

我尝试修改我在网上找到的一些代码并得到了这个:

for /F "tokens=1 delims=," %%v IN (folderlist.txt) DO echo test>"C:\Users\myname\My Documents\test\"%%v""  

然而,运行这个,我得到“访问被拒绝。”
知道出了什么问题,还是其他方法呢?谢谢。

1 个答案:

答案 0 :(得分:0)

命令

echo test>"C:\Users\myname\My Documents\test\"%%v""

尽管%%v周围的双引号错误,但文字test直接重定向到目录,而不是中的文件test.txt 目录。或者换句话说:Windows拒绝尝试创建名称为已存在目录的文件,结果是拒绝访问错误消息。

在文本文件test.txt中指定的每个目录中使用行test创建文件folderlist.txt的解决方案是:

for /F "tokens=1 delims=," %%v in (folderlist.txt) do echo test>"%USERPROFILE%\My Documents\test\%%v\test.txt"

还可以在测试文件夹的所有子文件夹中创建文件大小为0字节的文件test.txt,并在批处理文件中使用以下命令行。

for /D %%v in ("%USERPROFILE%\My Documents\test\*") do echo. >nul 2>"%%v\test.txt"

命令 FOR 在这种情况下返回带有完整路径的子文件夹名称,即使文件夹路径包含空格字符,也不会包含双引号。

有关详细信息,请参阅How to create empty text file from a batch file?并阅读有关Using command redirection operators的Microsoft文章。

echo. >nul 2>test.txt只会将 STDOUT 的新行重定向到设备 NUL ,以避免在批量执行到屏幕时打印大量空白行。对于文件text.txt,没有任何内容从 STDERR 重定向,因为命令 ECHO 没有打印错误消息,导致创建一个空的test.txt文件。

在命令提示符窗口for /?中运行,获取有关 FOR 命令的帮助。