用于更改具有某些逻辑

时间:2016-08-08 10:44:01

标签: batch-file

我有一个具有以下布局的目录:

1 януари 2012
2 февруари 2012
1 януари 2013

我希望它看起来像yyyy-mm-dd

2012-01-01
2012-02-01
2013-01-01

Януари/февруари是几个月的西里尔字母名称,因此很容易映射到数字 - 01/02

脚本基本上必须:

  1. 取名字
  2. 以正确的格式重命名
  3. 我是批处理脚本编码的新手。

    所以,如果你能帮助我,那就太好了。

1 个答案:

答案 0 :(得分:1)

假设您只需重命名януарифевруари的文件夹,将 C:\ Folders 替换为目标目录的实际完整路径,将此脚本保存到 test.bat ,从脚本文件夹中打开Cmd Prompt并进行测试。无论当前的Cmd代码页如何,它都适用于我的Win10英语和您的目录名称。

@echo off
setlocal enabledelayedexpansion
set "dir=C:\Folders"
for /f "tokens=4" %%A in ('chcp') do (
    if not %%A==855 set "enc=%%A" & chcp 855 >nul)
for /f "tokens=1,2,3" %%G in ('dir /b /a:d "%dir%"') do (
    set "yea=%%I" & set "fold=%%G %%H %%I"
    for /f "tokens=1,2 delims=я" %%B in ("%%H") do (
        if not %%C.==. (set  mon=01) else set mon=02)
    if %%G leq 9 (set dat=0%%G) else set dat=%%G
    set "nfold=!yea!-!mon!-!dat!"
    move /y "%dir%\!fold!" "%dir%\!nfold!"
)
if defined enc chcp !enc! >nul
exit /b