有没有办法从命令行复制一个文件夹,我只知道其名称的一部分,并根据第一个命名新文件夹?拉链。
例如
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
没有输入参数,因为批处理适用于具有这种语法的任何文件夹。
任何帮助?
答案 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
编译构造的命令。