0

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

例如。

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

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

有什么帮助吗?

4

2 回答 2

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 循环变量。在此处阅读有关波浪号替换的更多信息

于 2013-11-04T21:54:55.593 回答
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编辑了构造的命令。

于 2013-11-04T22:50:09.210 回答