批量复制具有原始部分名称的文件夹

时间:2013-11-04 17:42:42

标签: batch-file

有没有办法从命令行复制一个文件夹,我只知道其名称的一部分,并根据第一个命名新文件夹?拉链。

例如

xcopy "c:\sys\my-folder-web-1.1" "c:\temp\my-folder-1.1.web" /E /H /I
7z.exe a -r "c:\end\my-folder.7z" "c:\temp\my-folder-1.1.web"

基本上我想使用部分名称并将其放在文件夹的末尾(如扩展名 - .web) 我想做一个动态工作的批处理文件,所以“1.1”可能是1.2等,但“web”部分总是一样的,如:

original folder        ->  result folder
my-folder-web-1.1      ->  my-folder-1.1.web
my-folder-web-1.2      ->  my-folder-1.2.web
my-folder-web-5.1      ->  my-folder-5.1.web
my-folder-web-67.1XPTO ->  my-folder-67.1XPTO.web

没有输入参数,因为批处理适用于具有这种语法的任何文件夹。

任何帮助?

2 个答案:

答案 0 :(得分:0)

我们可以在此处使用 DIR PATH * 扩展:

@echo off
set INPUT_PATH="c:\sys\my-folder-web-"
for /f "delims=" %%G IN ('DIR %INPUT_PATH%* /A:D /B') DO (
    xcopy "%%~fG" c:\temp\"%%~nG.web" /E /H /I
    rem work with c:\temp\"%%~nG.web" here
)
echo Done!

请注意,基于路径的波浪号替换只能应用于单侧变量,即命令行输入和FOR循环变量。阅读更多关于波浪号替换here

的信息

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL
FOR /f %%q IN ('dir /b /ad u:\sys\*-*-web-*.*') DO (
 FOR /f "tokens=1-3*delims=-" %%a IN ("%%q") DO (
  ECHO xcopy "%~1" "u:\temp\%%~nxa-%%b-%%d.web" /E /H /I
  ECHO 7z.exe a -r "u:\end\%%~nxa-%%b.7z" "u:\temp\%%~nxa-%%b-%%d.web"
 )
)
GOTO :EOF

这是一个开始。不确定你的格式究竟是什么。我在U:驱动器上实现了它,只需ECHO编译构造的命令。