我正在尝试使用文件夹中的批处理文件来获取文件名,但它不起作用。
我遵循了here的指南,但出于某种原因,它根本不会返回任何内容!
FOR /F "tokens=*" %%G IN ('dir /b C:\Users\Desktop\UPD\*.txt') DO SET result=%%G
我也尝试过:
FOR /F "tokens=*" %%G IN (dir /b C:\Users\Desktop\UPD\*.txt') DO SET _result=%%~G
echo %_result% >> %~dp0Outputfile.txt
我得到的是:
ECHO is on.
修改
这是我到目前为止所做的:
IF EXIST C:\Users\Nathanael\Desktop\UPD\*.txt (
echo file found >> %~dp0Outputfile.txt
chDIR C:\Users\Nathanael\Desktop\UPD\
dir *.txt /b >> %~dp0Outputfile.txt
FOR /F "tokens=*" %%G IN ('dir /b C:\Users\Nathanael\Desktop\UPD\*.txt') DO SET result=%%G
echo %result% >> %~dp0Outputfile.txt
)
输出结果为:
file found
NewVHD.txt
random.txt
ECHO is on.
答案 0 :(得分:0)
FOR /F "tokens=*" %%G IN ('dir /b C:\Users\Desktop\UPD*.txt') DO SET result=%%G
确保路径正确(例如,它可能是c:\Users\YourName\Desktop\UPD*.txt
,其中YourName
是用户名)?
答案 1 :(得分:0)
for /f
返回多个文件,则最后一个文件将覆盖set
if exist
因此要么避免使用反向逻辑的代码块
IF NOT EXIST "C:\Users\Nathanael\Desktop\UPD\*.txt" Goto :Eof or other label
或(始终缩进代码块以便更好地跟踪):
Setlocal EnableDelayedExpansion
IF EXIST "C:\Users\Nathanael\Desktop\UPD\*.txt" (
echo file found >> %~dp0Outputfile.txt
chDIR "C:\Users\Nathanael\Desktop\UPD\"
dir "*.txt" /b >> %~dp0Outputfile.txt
FOR /F "tokens=*" %%G IN ('dir /b C:\Users\Nathanael\Desktop\UPD\*.txt') DO SET result=%%G
echo(!result! >> %~dp0Outputfile.txt
)
echo is off
消息使用其他命令分隔符而不是空格如果var可能为空(我在这里使用了(