Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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_Cmd_Rename - Fatal编程技术网

Batch file 批处理文件,用于以日期增量重命名文件/文件夹

Batch file 批处理文件,用于以日期增量重命名文件/文件夹,batch-file,cmd,rename,Batch File,Cmd,Rename,我有一个名为Output的文件夹。我想使用批处理文件将其重命名为Output\u old05Aug15,其中05Aug15是今天的日期。但是,如果已经存在Output\u old05Aug15,则Output将重命名为Output\u old05Aug15\u 2nd,依此类推。我所需要的只是一个批处理文件,它会相应地重命名文件夹 编辑: 必须以增量方式重命名已存在的文件夹。以下是我所做的: @ECHO OFF SETLOCAL for /D %%f in (.\Output) do ( IF

我有一个名为
Output
的文件夹。我想使用批处理文件将其重命名为
Output\u old05Aug15
,其中
05Aug15
是今天的日期。但是,如果已经存在
Output\u old05Aug15
,则
Output
将重命名为
Output\u old05Aug15\u 2nd
,依此类推。我所需要的只是一个批处理文件,它会相应地重命名文件夹

编辑: 必须以增量方式重命名已存在的文件夹。以下是我所做的:

@ECHO OFF
SETLOCAL
for /D %%f in (.\Output) do (
 IF EXIST "Output_old*" (
  SET reqren=Y
  FOR /l %%x IN (2,1,999) DO IF DEFINED reqren IF NOT EXIST "Output_old_%%x" (rename "%%f" "Output_old_%%x"&SET "reqren=")
 ) ELSE (rename "%%f" "Output_old")
)
GOTO :EOF
我提到了这篇文章


我将把制作适当的顺序指示器留给你。请注意,%date%格式取决于区域设置,因此在我们的情况下,您将首先在
中使用
tokens=1 delims=/
作为

的代码使用到现在为止您尝试了什么?@Hackoo,编辑了文章。您的区域设置是什么?您能发布
echo%DATE%
输出吗?
echo%DATE%
给出了
2015年6月8日周四
。语言环境设置为USI已调整美国语言环境的代码,并更正了一个错误。看看它是否是wokrsHi@rostok,我遇到了一个问题,它总是使用日期部分的第一个参数,即2015年6月8日至8日的
,并且总是重命名为
输出\u old08Aug15
。这个粗体部分表示月份。考虑到日期部分的第二个参数,即2015年6月8日星期四,它应该类似于输出。将
%date%
视为
年月日
。请帮帮我。我的错,应该是
set dt=%date:~7,2%%monthName%%date:~-2%
@echo off
setlocal EnableDelayedExpansion

rem US locale, ie: 'Thu 08/06/2015'    
for /F "tokens=2 delims=/ " %%m in ("%date%") do set /A "n=(3*((1%%m)%%100-1))"
set month=JanFebMarAprMayJunJulAugSepOctNovDec
set monthName=!month:~%n%,3!
set dt=%date:~7,2%%monthName%%date:~-2%

if exist Output (
  for /l %%x in (1,1,999) do (
    if %%x EQU 1 set new=Output_old%dt%
    if %%x GEQ 2 set new=Output_old%dt%v%%x
    if not exist !new! (
        echo !new!
        rename output !new!
        goto fin
    )
  )
)

:fin