将文件复制并重命名为适当的子目录

时间:2013-06-15 06:33:12

标签: windows batch-file scripting dos

我有一个特别棘手的批处理脚本请求。我有像这样的文件/文件夹结构

/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下的文件夹名称。任何人都可以帮我这个吗?

1 个答案:

答案 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