下面是给我错误的代码片段!
set "inputFolder=%~dp0temp"
set "outputFolder=%~dp0temp"
set "outputFile=list.txt"
if not exist temp (
echo Input folder does not exist!
pause
exit /b 1
)
pushd temp
del temp\list.txt 2>nul
for %%F in (*) do (
echo Processing: "%%F"
echo file '%%~fF'>> temp\list.txt
)
popd
echo Completed!
pause
字符串
我有一个主文件夹,其中.bat文件运行,现在 bat 文件创建临时文件夹,并在其中添加一些文件(在此之前的代码中完成)此代码应该创建一个文本文件,其中有一个文件列表在临时文件夹中,在这种格式:file 'temp folder path\filename.ext'
但是没有创建txt文件,它给了我以下错误:
Processing: "filename" (filename is correct which is present in temp folder)
The system cannot find the patch specified.
型
你们能告诉我怎么了吗
我也尝试了~dp0
(这是设置)的事情,但这样做,它失败的if语句!然后我尝试了直接的方法,而不是使用设置值,我使用目录路径。
简而言之:我试图创建一个文本文件,自动列出一个文件夹中的所有文件。
1条答案
按热度按时间xdyibdwo1#
在批处理文件中可以使用以下内容:
字符串
还可以用途:
型
这两个变体之间的主要区别是第二个变体根本不改变当前的工作目录。
请阅读this answer中的issue章节。
注意:同样在批处理文件目录下的子目录
temp
下创建的文件list.txt
也会列在list.txt
中。如果驱动器使用FAT32或exFAT而不是NTFS作为文件系统,甚至可能会发生另一个文件丢失,而不是在list.txt
中,或者循环无休止地运行。输出文件应该在不同的目录中创建,或者使用不同的FOR循环,该循环首先将子目录temp
中的所有文件名加载到处理批处理文件的cmd.exe
的内存中,然后FOR处理捕获的文件名列表,如下所示,下面是两个批处理文件解决方案。标签:At which point does
for
orfor /R
enumerate the directory (tree)?第一个包含
list.txt
的批处理文件也以故障安全方式在输入文件夹中创建,未在列表文件中列出list.txt
:型
具有隐藏属性的文件也包括在列表中。将
/A-D
修改为/A-D-H
以排除隐藏文件,如FOR所做的。第二个带有
list.txt
的批处理文件也以故障安全方式在输入文件夹中创建,未在列表文件中列出list.txt
:型
要了解所使用的命令及其工作方式,请打开command prompt窗口,在其中执行以下命令,并仔细阅读显示的每个命令的帮助页面。
call /?
del /?
个dir /?
echo /?
个endlocal /?
个exit /?
个for /?
个goto /?
个if /?
pause /?
set /?
setlocal /?
另请参阅:Single line with multiple commands using Windows batch file,它解释了条件命令运算符
&&
。