Batch file 创建新文件夹&;更名为&;将所有具有特殊名称的文件夹移动到新创建的文件夹中
我有这个代码是根据用户需求执行的。它在Batch file 创建新文件夹&;更名为&;将所有具有特殊名称的文件夹移动到新创建的文件夹中,batch-file,batch-processing,Batch File,Batch Processing,我有这个代码是根据用户需求执行的。它在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
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-第1部分
2014-07-18 13h44m10s-第1部分
重命名为2014-07-18 13h44m10s-群组视频
,而不制作临时目录tempgroup
。这样做是为了防止在再次执行脚本时创建tempgroup
文件夹部分的所有文件夹移动到2014-07-18 13h44m10s-群组视频中
2014-07-18 13h44m10s-第1部分
2014-07-18 13h45m10s-第2部分
2014-07-18 13h46m20s-第3部分
2014-07-18 13h47m32s-第4部分
2014-07-18 13h48m10s-第5部分
2014-07-18 13h48m20s-第6部分
2014-07-18 13h48m30s-第7部分
2014-07-18 13h48m40s-第8部分
2014-07-18 13h49m50s-第9部分
应将上述文件夹移动到此文件夹中
2014-07-18 13h44m10s-群视频
提前感谢以下批处理代码将所有子目录中名为部分的所有文件(但不是其子目录)复制到名为部分的第一个目录的日期/时间字符串中名为组视频的目录中
@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
@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
换句话说,子目录中的所有文件
- 2014-07-18 13h44m10s-第1部分
- 2014-07-18 13h44m10s-第2部分
- 等等
如果此批处理文件不存在(例如,从上一次运行中),则将复制到由该批处理文件创建的目录2014-07-18 13h44m10s-组视频
下一批代码将文件移动到创建的目录中,并删除名称为部分的目录
@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
@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
使用新数据-在文件夹的副本上进行测试。
如果有多组文件夹,它也可以工作
@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
谢谢你,但是文件夹的时间会改变,2将永远不会相同。我已经更新了原来的帖子。好的,它会创建文件夹,但是可以将文件夹移动到新创建的文件夹GroupVideoDirectory
。尝试此移动/Y“%%a”“!GroupVideoDirectory!”>nul
好的,通过此更改,它会完美地移动文件夹<代码>移动/Y“%%a”“!GroupVideoDirectory!”>nul