再帰名を変更したいファイル名フォルダの名前とバッチファイル

StackOverflow https://stackoverflow.com/questions/717171

  •  23-08-2019
  •  | 
  •  

質問

作っていきたいと思っているバッチファイル(winxp cmd)を再帰的にはじまりを選んだのフォルダとフォルダのサブフォルダの名称変更がファイル+フォルダは、以下のルール

からすべてのファイルフォルダの名前、すべて大文字+小文字の"V"で"W"の文字交換の必要性はあり文字"Y"、"Z"で表します。

例えば11V0Wなければならな11Y0Z.

と思うこと/Rはいかがですか?ているとは思えない。する型と呼ばれることを確認書を一つ一つに、"おかえり"と声をかけて再帰のために/R.

役に立ちましたか?

解決

次のバッチは、少なくともファイル名のためにこれを行います。ディレクトリは(少なくとも私は、これまで非無限の解決策を考え出すことができませんでした)少しトリッキーです。

@echo off
setlocal enableextensions
for /r %%f in (*) do call :process "%%f"
endlocal
goto :eof

:process
pushd "%~dp1"
set fn=%~nx1
set fn=%fn:V=Y%
set fn=%fn:W=Z%
ren "%~nx1" "%fn%"
popd
goto :eof

しかし、理論的には、この上にディレクトリの名前変更をタックにはあまりにも難しいことではありません。

他のヒント

Tom,fiddlingの周り以前のスクリプト掲載し、処理すべてのファイルとサブディレクトリ:

recurename.cmd ディレクトリ

@echo off
setlocal ENABLEDELAYEDEXPANSION
set Replaces="V=Y" "W=Z" "m=A"
set StartDir=%~dp1
call :RenameDirs "%StartDir:~0,-1%"
exit /b 0
:RenameDirs
    call :RenameFiles "%~1"
    for /f "delims=" %%d in ('dir /ad /b "%~1"2^>nul') do call :RenameDirs "%~1\%%~d"
    if "%~1"=="%StartDir:~0,-1%" exit /b 0
    set _pos=0
    set _dir=%~f1
    set _dir_orig=!_dir!
    :finddirName
        set /a _pos-=1
        call set _dir_pos=!!!_dir:~%_pos%,1!!!
        if not "%_dir_pos%"=="\" goto finddirName
        call set _origines=!!!_dir:~0,%_pos%!!!
        set /a _pos+=1
        call set _dir=!!!_dir:~%_pos%!!!
    for %%r in (%Replaces%) do call set _dir=!!!_dir:%%~r!!!
    if /i not "!_dir!"=="!_dir_orig!" echo move "%~1" "%_origines%\!_dir!"
    exit /b 0
:RenameFiles
    for /f "delims=" %%f in ('dir /a-d /b "%~1"2^>nul') do (
        set _file=%%~nf
        set _file_orig=!_file!
        for %%r in (%Replaces%) do call set _file=!!!_file:%%~r!!!
        if /i not "!_file!"=="!_file_orig!" echo ren "%~1\%%f" "%~1\!_file!%%~xf"
    )
    exit /b 0

___注____
これは非破壊スクリプトを削除し エコー からの正しいコマンドの名前変更はファイル/ディレクトリにあります。(エコー移動echo子)

セットに置き換え=: この変数にも対すの変更が必要です。

設定Startdir=: また、何らかの引数とみられます。場合はファイルとして与えられたパラメータは、全体のコンテナのディレクトリにsubdirsいいたします。

場合は"%~1"=="%StartDir:~0,-1%"exit/b0: このラインが配され止めの引数ディレクトリ自体が処理されます。ご希望の場合は、削除します。
の場合はスクリプトが呼び出され、 c: emp\, の除去、このように名称変更へ c: eAp\ します。

このディレクトリツリーでます:

.
├── 00v0w
│   ├── 12V0W
│   ├── 12d0w
│   └── 12v0d
├── 11V0W
├── 11d0w
└── 11v0d

これらののrel="nofollow">リネームをhref="https://github.com/75lb/renamer"

$ renamer --regex --find '[vV]' --replace 'Y' '**'
$ renamer --regex --find '[wW]' --replace 'Z' '**'

この出力を生成します

.
├── 00Y0Z
│   ├── 12Y0Z
│   ├── 12Y0d
│   └── 12d0Z
├── 11Y0Z
├── 11Y0d
└── 11d0Z
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top