Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 使用不同的命名方案重命名多个文件夹_Batch File - Fatal编程技术网

Batch file 使用不同的命名方案重命名多个文件夹

Batch file 使用不同的命名方案重命名多个文件夹,batch-file,Batch File,我有很多照片文件夹,我用日期命名,日期是03282013,意思是2013年3月28日 我已经开始使用一个更明显、更容易排序的命名方案2013-03-28,意思是2013年3月28日 是否有一种直接的方法,使用批处理文件,使用新格式重命名我所有的旧文件夹 示例:将03282013重命名为2013-03-28,以此类推如果输出正常,尝试此操作,删除ren之前的最后一个回声: @echo off &setlocal for /f "tokens=1,2" %%a in ('for /f "de

我有很多照片文件夹,我用日期命名,日期是03282013,意思是2013年3月28日

我已经开始使用一个更明显、更容易排序的命名方案2013-03-28,意思是2013年3月28日

是否有一种直接的方法,使用批处理文件,使用新格式重命名我所有的旧文件夹

示例:将03282013重命名为2013-03-28,以此类推

如果输出正常,尝试此操作,删除ren之前的最后一个回声:

@echo off &setlocal
for /f "tokens=1,2" %%a in ('for /f "delims=" %%i in ^('dir /ad /b .^^^| findstr /b [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$'^) do ^
@set "fname=%%i"^&^
@call set "month=%%fname:~0,2%%"^&^
@call set "day=%%fname:~2,2%%"^&^
@call set "year=%%fname:~-4%%"^&^
@call set "fname=%%year%%-%%month%%-%%day%%"^&^
@call echo "%%~i" "%%fname%%"') do echo ren "%%~a" "%%~b" 

这将搜索正确的MMDDYYYY格式的文件夹,所有其他文件夹保持不变。

下面的批处理文件将当前目录中的所有文件夹从MMDDYYYY格式重命名为YYYY-MM-DD格式:

@echo off
setlocal EnableDelayedExpansion
for /F %%a in ('dir /B /AD') do (
   set name=%%a
   ren %%a !name:~4!-!name:~0,2!-!name:~2,2!
)

Antonio

使用PowerShell或一流的编程语言(字符串操作更好)可能会更好地实现这一点。也就是说:需要更多信息-目标目录的名称是mmddyyy还是只是名称的一部分?如果它只是一个部分,那么命名模式是什么?