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

问题描述:

所以基本上,让我们说我有一个目录下面的文件夹:如何创建在目录中的每个文件夹中创建文本文件的脚本? (Windows批处理)

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"" 

然而,运行此,我得到“拒绝访问”。
任何想法出了什么问题,或其他方式来做到这一点?谢谢。

命令

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

尽管各地%%v错了双引号重定向文本test直接目录而不是文件test.txt目录。或者换句话说:Windows试图创建一个名称为已经存在的目录的文件,结果是访问被拒绝的错误信息。

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

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

另外,也可以创建一个文件test.txt用0字节中的所有的文件大小测试文件夹的子文件夹和批处理文件中的以下命令行。

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

命令作为在此情况返回子文件夹名称与完整路径始终没有周围的双引号,即使文件夹路径包含空格字符,因为它是这里的情况。

请参阅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 /?寻求命令帮助对于

+0

谢谢莫菲。我还可以问你,为什么我们使用%% v而不是%v?在任何情况下都可以使用一个%符号,如果是这样,两者之间有什么区别? – Ambushes

+0

当您直接从命令行运行命令时,您使用单个%符号。使用双%符号在批处理文件中。 – Filipus