我试图使用.bat文件将今天的日期附加到子文件夹中的pdfs。现在我有:

时间:2017-08-18 13:43:34

标签: batch-file rename batch-rename

新手 - 我正在尝试创建一个.bat文件,该文件将重命名子文件夹中的所有文件(我希望它的行为类似于%folder%而不是使用实际位置),添加一个前缀,比如ABS_ 123,以及今天的日期_20170818

现在我有了这个(伪):

@echo off
%subfolder%
for (*) do ren "%%a" "pre %%a"
for (*) do ren "%%~a" "%%~na ("_%%DATE)%%~xa"

1 个答案:

答案 0 :(得分:0)

我同意Compos和Mofis的评论,但IMO在这里提出了很多过时的变种:

  • 区域设置/用户设置依赖%date%%time%变量或
  • 用它的cr / cr / lf序列来解析wmic变体的笨拙。
  • J- / vbscript解决方案要求新手很难理解临时文件或混合版本。

使用/解析PowerShell会有一点延迟,但因为它通常只在脚本中使用一次并不重要。

您可以插入日偏移量以获取不同的日期。

@Echo off
For /f %%Y in (
    'powershell -NoP -C "(get-date).AddDays(-1).ToString(\"yyyy-MM-dd\")"'
) Do Set Yesterday=%%Y
Echo Yesterday = %Yesterday%

For /F %%D in (
    'powershell -NoP -C "(get-date).AddDays(0).ToString(\"MM\/dd\/yyyy\")"'
) Do Set "DT=%%D"
Echo Today mdy = %DT%

For /f %%T in (
    'powershell -NoP -C "(get-date).AddDays(+1).ToString(\"yyyy\/MM\/dd\")"'
) Do Set Tomorrow=%%T
Echo Tomorrow  = %Tomorrow%

For /f %%o in (
    'powershell -NoP -C "(get-date).AddDays(0).ToString(\"o\")"'
) Do Set ISO8601=%%o
Echo ISO8601   = %ISO8601%

For /f "delims=" %%U in (
    'powershell -NoP -C "(get-date).AddDays(0).ToString(\"U\")"'
) Do Set UTC=%%U
Echo UTC       = %UTC%

For /f "delims=" %%F in (
    'powershell -NoP -C "(get-date).AddDays(0).ToString(\"F\")"'
) Do Set FullDT=%%F
Echo FullDT    = %FullDT%

我的德语区域设置系统上的输出,日/月名称来自您的语言区域。

Yesterday = 2017-08-17
Today mdy = 08/18/2017
Tomorrow  = 2017/08/19
ISO8601   = 2017-08-18T17:06:46.1050969+02:00
UTC       = Freitag, 18. August 2017 15:06:46
FullDT    = Freitag, 18. August 2017 17:06:46

有关更多格式说明符,请参阅this link