我创建了一个通用批处理(或 Windows 命令)文件,它允许我循环遍历目录的内容并为每个项目调用一个命令。
IF a%1==a ( set _DIR="%CD%") ELSE ( set _DIR="%~1")
IF a%2==a ( set _COMMAND=rem) ELSE ( set _COMMAND=%2)
IF a%3==a ( set _FILTER=*.*) ELSE ( set _FILTER=%3)
set _OPTS=%4
FOR /F "delims=" %%f IN ('dir %_DIR%\%_FILTER% %_OPTS% /b') DO (
%_COMMAND% "%%f"
)
但是,我正在尝试确定如何确保调用%_COMMAND%
正确的文件。
我尝试将目录变量放在前面,例如%_COMMAND% %_DIR%\"%%f"
,但这会在我传递的参数中留下引号。例如,如果我调用批处理文件exec_dir.bat
,并使用以下内容调用它,我会发现运行echo_test.bat
时所有文件都有引号。echo_test.bat
echo %~dpn1.mp4
该批处理脚本生成:
> exec_dir.bat "C:\Users\User\Desktop\Test Folder" echo_test.bat *.txt
C:\Users\User\Desktop\Test Folder\"Test File.txt
C:\Users\User\Desktop\Test Folder\"Test2.txt
我的想法是它与转义字符有关\
,但我似乎无法解决它。
答案1
设置本地 如果“%~1” ==“”(设置目录=。)否则(设置目录=“%~1”) 如果“%~2”==“”(设置命令=echo)否则(设置命令=%~2) 如果“%~3”==“”(设置掩码=*)否则(设置掩码=%~3) 对于 /r %dir% %%f 在 (%mask%) 中执行 %command% %%~dpnxf
或者简单来说:
C:\>for /r.%f 在(*)中执行@echo%~dpnxf