批处理文件if语句是否跳过DO语句?

时间:2016-08-04 16:05:28

标签: batch-file robocopy

所以现在我所拥有的是我在一个文件夹中循环浏览某些文件以进行测试("开始")并使用robocopy将它们复制到另一个文件夹(" End" )。现在在" End"文件夹我有不同的子文件夹,我根据文件名中的内容发送文件。一个示例文件名将是" 9999 SO 04.31.16 R1 NAME"我在哪里看它说R1的位置,因为所有文件的格式在字符方面都是相同的,并且它在哪里被切断。

    @echo off
SetLocal EnableDelayedExpansion
echo Hello this a test batch file
pause
for %%a in (M:\Research\Collaboration\Felipe\Start\*.txt) do (
set filename=%%~na
set fileExt=%%~xa
set filePath=%%~pa
set first4=!filename:~15!
set first4=!first4:~0,4! 
set first4=!first4: =!

set fit=!filename:~22!
set fit=!fit:~0,4!
set fit=!fit: =!
set fitFirst4=!filename:~4!
set fitFirst4=!fitFirst4:~0,4!
set fitFirst4=!fitFirst4: =!

echo First4: !first4!
echo FitFirst4: !fitFirst4!


if "!first4!" == "D2" (
    if NOT exist "M:\Research\Collaboration\Felipe\End\Deployment\"!filename! "vault.txt" (
        robocopy /xc /xn /xo M:\Research\Collaboration\Felipe\Start M:\Research\Collaboration\Felipe\End\Deployment "!filename!".txt
    )
)
if "!first4!" == "Pre" (
    if NOT exist "M:\Research\Collaboration\Felipe\End\Deployment\"!filename! "vault.txt" (
        robocopy /xc /xn /xo M:\Research\Collaboration\Felipe\Start M:\Research\Collaboration\Felipe\End\Deployment "!filename!".txt
    )
)
if "!first4!" == "D1" (
    if NOT exist "M:\Research\Collaboration\Felipe\End\Deployment\"!filename! "vault.txt" (
        robocopy /xc /xn /xo M:\Research\Collaboration\Felipe\Start M:\Research\Collaboration\Felipe\End\Deployment "!filename!".txt
    )
)
if "!first4!" == "R1" (
    if NOT exist "M:\Research\Collaboration\Felipe\End\Deployment\"!filename! "vault.txt" (
        robocopy /xc /xn /xo M:\Research\Collaboration\Felipe\Start M:\Research\Collaboration\Felipe\End\Reintegration "!filename!".txt
    )
)
if "!first4!" == "R2" (
    if NOT exist "M:\Research\Collaboration\Felipe\End\Deployment\"!filename! "vault.txt" (
        robocopy /xc /xn /xo M:\Research\Collaboration\Felipe\Start M:\Research\Collaboration\Felipe\End\Reintegration "!filename!".txt
    )
)
if "!first4!" == "R3" (
    if NOT exist "M:\Research\Collaboration\Felipe\End\Deployment\"!filename! "vault.txt" (
        robocopy /xc /xn /xo M:\Research\Collaboration\Felipe\Start M:\Research\Collaboration\Felipe\End\Reintegration "!filename!".txt
    )
)
...

现在我在发送文件的末尾重命名带有特定后缀的文件,这就是我检查文件是否存在的原因,以确保它们不会再次重新复制同一文件。现在的问题是,当我运行批处理文件时,它将复制一些文件但不是所有文件。例如。在代码中,我检查" R1"," D2"等等,但目前只有少数几个被复制到我的位置,只有那些有" D2&#的文件34;和" R3"正在被复制,但所有其他都被跳过。

我检查了我的变量!first4!检查它是否正确获取值,当我运行文件时打印或回显变量。我现在只做了一个星期的批处理,所以我很遗憾为什么其他文件没有被复制,如果" if"检查文件是否存在的语句不正确。

0 个答案:

没有答案