我有一个特别棘手的批处理脚本请求。我有像这样的文件/文件夹结构
/mapcfgs/
/folder 1/
somefile.new
somefile.old
/folder 2/
someotherfile.new
someotherfile.old
/folder 3/
someotherotherfile.new
someotherotherfile.old
/maps/
/folder 1/
somefile.inf
/folder 2/
someotherfile.inf
/folder 3/
someotherotherfile.inf
现在,我要做的是制作一个脚本,将/ copycfgs /(文件夹名称)/ * .new复制到/ maps /(文件夹名称)/ *。inf
我遇到的问题是我不知道如何只是我的for语句找到的每个文件的文件夹名称,因为我需要在我的copy语句中使用该参数
到目前为止,我的脚本看起来像这样。
@echo off
echo hello
for /f "usebackq tokens=* delims=\" %%a in (`dir /a-d /b /s mapcfgs *.new`) do copy "%%~dpna.new" "maps/%%~na.inf"
echo script finished
但是我不需要将每个文件复制到/ maps /中,而是复制到/ maps下的相应文件夹名称中,这对应于文件在mapcfgs下的文件夹名称。任何人都可以帮我这个吗?
答案 0 :(得分:1)
这应该有效。它只会回显命令atm以供您检查。
@echo off
pushd "mapcfgs"
for /f "delims=" %%a in ('dir /ad /b') do (
echo copy "%%a\*.new" "..\maps\%%a\*.inf"
)
popd
pause