对不同的文件在我的脚本上重复相同的过程

时间:2019-05-13 09:19:12

标签: batch-file

我创建了一个脚本来对特定文件执行许多操作。有一些参数可以对名称为%filename%的文件执行这些特定操作。我希望能够一次添加多个文件。有什么想法吗?

set /p filename=Enter database to replace:

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.CHR" "\\enterprise\INFACTPR\CLIENT"

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.HED" "\\enterprise\INFACTPR\CLIENT"

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.PRD" "\\enterprise\INFACTPR\CLIENT"

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.IDX" "\\enterprise\INFACTPR\CLIENT"

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.INF" "\\enterprise\INFACTPR\CLIENT"

move /y "\\enterprise\INFACTCP\CLIENT\%filename%.TAD" "\\enterprise\INFACTPR\CLIENT"

del \\enterprise\INFACT\INFACTCP\LOG\%filename%.CHK

copy "\\enterprise\INFACTPR\CLIENT\%filename%.HED" "\\enterprise\INFACTPR\CLIENT\%~1.NEW"

我希望能够添加多个值,以替换为%filename%。假设当提示输入要替换的数据库时,我可以添加ABCABC1,然后将对名为{{1}的所有文件分别执行该过程。 }和ABC

2 个答案:

答案 0 :(得分:1)

使用for循环反汇编您的字符串:

set /p "filename=database(s)? "
for %%a in (%filename%) do (
  echo "\\enterprise\INFACTCP\CLIENT\%%~a.CHR" "\\enterprise\INFACTPR\CLIENT"
)

尝试使用hello worldsimple "two words"

答案 1 :(得分:0)

@echo off
setlocal

set "clientdir=\\enterprise\INFACTCP\CLIENT"
set "newfilename=%~1"

set /p "fileset=Enter database to replace: " || exit /b 0

for %%A in (%fileset%) do (
    for %%B in (CHR HED PRD IDX INF TAD) do (
        if "%%~B" == "HED" if defined newfilename (
            copy "%clientdir%\%%~A.%%~B" "%clientdir%\%newfilename%.NEW"
        )
        move /y "%clientdir%\%%~A.%%~B" "%clientdir%\"
    )
    del "\\enterprise\INFACT\INFACTCP\LOG\%%~A.CHK"
)

在输入提示下,您可以输入名称,即card "my book" chain key。 即cardmy bookchainkey的名称加上双 引号从他们那里剥离。如果未输入任何内容,脚本将退出, 通过使用exit /b 0

第一个for循环会将每个名称设置为%%A。第二个嵌套for循环 将为每个扩展名设置%%B。需要复制扩展名HED 在移动之前,否则该副本将不存在,因此将其复制 在任何移动操作发生之前。扩展名为CHK的文件名将 被删除。循环将继续进行,直到文件设置完成。

查看for /?关于位于最顶部的文件集( set )。