我创建了一个脚本来对特定文件执行许多操作。有一些参数可以对名称为%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%
。假设当提示输入要替换的数据库时,我可以添加ABC
,ABC1
,然后将对名为{{1}的所有文件分别执行该过程。 }和ABC
。
答案 0 :(得分:1)
使用for
循环反汇编您的字符串:
set /p "filename=database(s)? "
for %%a in (%filename%) do (
echo "\\enterprise\INFACTCP\CLIENT\%%~a.CHR" "\\enterprise\INFACTPR\CLIENT"
)
尝试使用hello world
或simple "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
。
即card
,my book
,chain
和key
的名称加上双
引号从他们那里剥离。如果未输入任何内容,脚本将退出,
通过使用exit /b 0
。
第一个for
循环会将每个名称设置为%%A
。第二个嵌套for
循环
将为每个扩展名设置%%B
。需要复制扩展名HED
在移动之前,否则该副本将不存在,因此将其复制
在任何移动操作发生之前。扩展名为CHK
的文件名将
被删除。循环将继续进行,直到文件设置完成。
查看for /?
关于位于最顶部的文件集( set )。