Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理通配符在不应使用时用作转义字符';T_Batch File_Wildcard - Fatal编程技术网

Batch file 批处理通配符在不应使用时用作转义字符';T

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 ) ) *被用作*而不是通配符。 如果我手动运行该文件,它可以正常工作,*用作通配符 为什么会发生这种情况?我怎么修理它

我有一个从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
    )
)
*被用作*而不是通配符。 如果我手动运行该文件,它可以正常工作,*用作通配符

为什么会发生这种情况?我怎么修理它?
非常感谢您的帮助。

不确定您为什么声称
*
工作不正常,但是-假设您当前的目录是
%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
命令是否可能指示要列出的文件夹?