0

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

/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

现在,我要做的是制作一个脚本,将 /mapcfgs/(name of folder)/*.new 复制到 /maps/(name of folder)/*.inf

我遇到的问题是我不知道如何只获取的 for 语句找到的每个文件的文件夹名称,因为我需要在我的复制语句中使用该参数。

到目前为止,我的脚本看起来像这样。

@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 下的文件夹名称。谁能帮我这个?

4

1 回答 1

1

这应该有效。它只会回显命令 atm 供您检查。

@echo off
pushd "mapcfgs"
for /f "delims=" %%a in ('dir /ad /b') do (
echo copy "%%a\*.new" "..\maps\%%a\*.inf"
)
popd
pause
于 2013-06-15T07:26:59.707 回答