无法让移动脚本读取文件名并根据此操作执行操作

时间:2016-10-05 20:06:32

标签: windows batch-file cmd

我正在尝试使用移动器批处理脚本来读取文件夹中的文件名,并在移动它们之前根据文件名对它们执行操作。

我可以毫不费力地移动文件,但我无法根据文件名部分获取正确的内容。

@ECHO on
setlocal enableDelayedExpansion
SET src_folder=c:\recordz
SET tar_folder=\\TOWER\Temprec
:LOOP

  for /f "delims=" %%a IN ('dir "%src_folder%"\*.mpg /b') do (

    set "var=%%~na"
    Echo %var%
    Rem this part is supposed to check if NFL is part of the filename
If NOT "%var%"=="%var:NFL=%" (
            echo Found inside
        REN "%src_folder%\%%~na.mpg" "%%~na.ts"
    move %src_folder%\"%%~na.ts" %tar_folder%
) else (
        echo No cigar
        move %src_folder%\"%%~na.mpg" %tar_folder%
    )


)
REM Crafty 5 minute delay...
PING 1.1.1.1 -n 1 -w 1800000 >NUL
GOTO LOOP

当我运行上述内容时,我明白了:

C:\Scripts>(
set "var=Feux_20161003_21002200"
Echo
If NOT "" == "NFL=" (
echo Found inside
 REN "c:\recordz\Feux_20161003_21002200.mpg" "Feux_20161003_21002200.ts"
 move c:\recordz\"Feux_20161003_21002200.ts" \\TOWER\Temprec
)  else (
echo No cigar
move c:\recordz\"Feux_20161003_21002200.mpg" \\TOWER\Temprec
)
)
ECHO is on.
Found inside

1 个答案:

答案 0 :(得分:0)

虽然您已启用延迟扩展,但您没有使用它。改成 !在循环中。

for /f "delims=" %%a IN ('dir "%src_folder%"\*.mpg /b') do (
    set var=%%~na
    Echo !var!
    Rem this part is supposed to check if NFL is part of the filename
    If NOT "!var!"=="!var:NFL=!" (
        echo Found inside
        REN "%src_folder%\%%~na.mpg" "%%~na.ts"
        move %src_folder%\"%%~na.ts" %tar_folder%
    ) else (
        echo No cigar
        move %src_folder%\"%%~na.mpg" %tar_folder%
    )
)