Batch file 批处理通配符在不应使用时用作转义字符';T
我有一个从Windows7右键单击上下文菜单调用的批处理。 在批中,我有这个代码Batch file 批处理通配符在不应使用时用作转义字符';T,batch-file,wildcard,Batch File,Wildcard,我有一个从Windows7右键单击上下文菜单调用的批处理。 在批中,我有这个代码 FOR %%t in (avi,mkv,mp4,wmv,ts) do ( FOR /f "tokens=*" %%m in ('DIR /a:d /b ') DO ( move "%myDir%%%m\*.%%t" "%myDir%" pause ) ) *被用作*而不是通配符。 如果我手动运行该文件,它可以正常工作,*用作通配符 为什么会发生这种情况?我怎么修理它
FOR %%t in (avi,mkv,mp4,wmv,ts) do (
FOR /f "tokens=*" %%m in ('DIR /a:d /b ') DO (
move "%myDir%%%m\*.%%t" "%myDir%"
pause
)
)
*被用作*而不是通配符。
如果我手动运行该文件,它可以正常工作,*用作通配符
为什么会发生这种情况?我怎么修理它?
非常感谢您的帮助。不确定您为什么声称
*
工作不正常,但是-假设您当前的目录是%Mydir%
,则很可能
move "%myDir%%%m\*.%%t" "%myDir%"
应该是
move "%myDir%\%%m\*.%%t" "%myDir%"
作品标题有误导性。。。为什么要将通配符用作转义字符 通配符在for循环中运行良好,我的钱在%myDir%上是罪魁祸首 我建议在这些情况下使用
pushd
和popd
,以避免路径连接问题
以下代码工作正常:
@echo off
set dest=%CD%\TargetDir
for %%t in (txt) do (
for /f "tokens=*" %%d in ('dir /a:d /b ') Do (
if not %CD%\%%d == %dest% (
pushd %%d
echo Moving %%t files from %%d to %dest%
move "*.%%t" "%dest%"
popd
)
)
)
什么值包含“%myDir%”?批处理文件执行上下文中的当前目录是什么?DIR
命令是否可能指示要列出的文件夹?