我有这个代码是根据用户需求执行的。它会在C:\test\test\test
中查找包含单词part
的任何文件夹,并为其执行一些操作。
set num=0
cd /d "C:\test\test\test"
for /f "delims=" %%a in ('dir *part* /b /ad /ODN ') do (
REM - New Funcations
mkdir "tempgroup" && set name=%%a && ren "tempgroup" "!name:~0,-9!- GROUP VIDEO"
move %%a
GOTO NEXT
)
我想扩展功能但是花了很多时间却没有得到我想要的结果。
首先%%a
= 2014-07-18 13h44m10s - Part 1
复制文件夹名称并将2014-07-18 13h44m10s - Part 1
重命名为2014-07-18 13h44m10s - GROUP VIDEO
而不创建临时目录tempgroup
。这样做的原因是,如果再次执行脚本,则阻止创建tempgroup
文件夹。
将包含单词PART
的所有文件夹移至2014-07-18 13h44m10s - GROUP VIDEO
以下是文件夹列表及其外观:
2014-07-18 13h44m10s - Part 1
2014-07-18 13h45m10s - Part 2
2014-07-18 13h46m20s - Part 3
2014-07-18 13h47m32s - Part 4
2014-07-18 13h48m10s - Part 5
2014-07-18 13h48m20s - Part 6
2014-07-18 13h48m30s - Part 7
2014-07-18 13h48m40s - Part 8
2014-07-18 13h49m50s - Part 9
上述文件夹应移至此文件夹
2014-07-18 13h44m10s - GROUP VIDEO
提前致谢
答案 0 :(得分:1)
以下批处理代码复制所有子目录中的所有文件(但不是其子目录),名称中包含部分的目录 - GROUP VIDEOS 名称附加到第一个目录的日期/时间字符串,名称中包含部分。
@echo off
setlocal enabledelayedexpansion
cd /d "C:\test\test\test"
set GroupVideoDirectory=
for /f "delims=" %%a in ('dir *part* /b /ad /ODN ') do (
set "DirName=%%a"
if "!GroupVideoDirectory!"=="" (
set "GroupVideoDirectory=!DirName:~0,-9! - GROUP VIDEO"
if not exist "!GroupVideoDirectory!" mkdir "!GroupVideoDirectory!"
)
copy /Y "%%a\*.*" "!GroupVideoDirectory!" >nul
)
endlocal
换句话说,来自子目录的所有文件,如
将复制到此批处理文件创建的目录 2014-07-18 13h44m10s - GROUP VIDEO (如果该批处理文件尚不存在)(例如,来自之前的运行)。
下一批代码将文件移动到创建的目录中,并删除名称中 part 的目录。
@echo off
setlocal enabledelayedexpansion
cd /d "C:\test\test\test"
set GroupVideoDirectory=
for /f "delims=" %%a in ('dir *part* /b /ad /ODN ') do (
set "DirName=%%a"
if "!GroupVideoDirectory!"=="" (
set "GroupVideoDirectory=!DirName:~0,-9! - GROUP VIDEO"
if not exist "!GroupVideoDirectory!" mkdir "!GroupVideoDirectory!"
)
move /Y "%%a\*.*" "!GroupVideoDirectory!" >nul
rd "%%a"
)
endlocal
答案 1 :(得分:1)
使用新数据 - 在文件夹副本上进行测试 如果有多组文件夹,它也会起作用。
@echo off
cd /d "C:\test\test\test"
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir *part* /b /ad') do (
set "name=%%a"
if not "%%a"=="!name: - Part 1=!" set "groupfolder=!name:~0,20! - GROUP VIDEO"
md "!groupfolder!" 2>nul
move "%%a" "!groupfolder!" >nul
)
echo done
pause