web-dev-qa-db-ja.com

Windowsバッチファイルの名前変更

Windows 7にはAAA_a001.jpgBBB_a002.jpgCCC_a003.jpgなどのファイルがあり、バッチを使用してこれらのファイルの名前をa001_AAA.jpga002_BBB.jpgに変更しようとしています、a003_CCC.jpg

_の間でコンテンツを交換するだけです。

私はしばらく探していましたが、まだこれを行う方法がわかりません。誰でも助けることができますか?ありがとう。

14
yuchien
@echo off
pushd "pathToYourFolder" || exit /b
for /f "eol=: delims=" %%F in ('dir /b /a-d *_*.jpg') do (
  for /f "tokens=1* eol=_ delims=_" %%A in ("%%~nF") do ren "%%F" "%%~nB_%%A%%~xF"
)
popd

注:名前は、_の最初の出現時に分割されます。ファイルの名前が「part1_part2_part3.jpg」の場合、「part2_part3_part1.jpg」に名前が変更されます

7
dbenham

RENコマンドを使用

Renrename用です

ren ( where the file is located ) ( the new name )

ren C:\Users\&username%\Desktop\aaa.txt bbb.txt

aaa.txtをbbb.txtに変更します

あなたのコードは次のようになります:

ren (file located)AAA_a001.jpg a001.AAA.jpg

ren (file located)BBB_a002.jpg a002.BBB.jpg

ren (file located)CCC_a003.jpg a003.CCC.jpg

等々

IT WILL NOT WORK IF THERE IS SPACES!

それが役立つことを願っています:D

34
Itsproinc

itsproincが言ったように、RENコマンドは機能します!

ただし、ファイルのパス/名前にスペースが含まれる場合は、引用符 ""を使用します

例:

ren C:\Users\&username%\Desktop\my file.txt not my file.txt

「」を追加

ren "C:\Users\&username%\Desktop\my file.txt" "not my file.txt"

それが役に立てば幸い

6
M.S.M.

_の前とアンダースコアの後の部分の長さと、拡張子を知っていると仮定しています。そうしないと、単純な部分文字列よりも複雑になる可能性があります。

cd C:\path\to\the\files
for /f %%a IN ('dir /b *.jpg') do (
set p=%a:~0,3%
set q=%a:~4,4%
set b=%p_%q.jpg
ren %a %b
)

このスクリプトを思いついたばかりで、テストしませんでした。詳細については、 this および that をご覧ください。

_の位置と長さと拡張子がわからないと仮定したい場合は、_のインデックスをチェックするためにforループで何かをすることができると思います。 .のインデックスをgotoにラップして機能させる。その問題を喜んで経験する場合は、少なくともWindowsPowerShell(またはCygwin)を使用するか(独自の目的で)、より高度なスクリプト言語をインストールする(Python/Perlを考える)ことをお勧めします。方法。

1
jadkik94

コードで名前を変更します

echo off

setlocal EnableDelayedExpansion

for %%a in (*.txt) do (
    REM echo %%a
    set x=%%a
    set mes=!x:~17,3!

    if !mes!==JAN (
        set mes=01
    )

    if !mes!==ENE (
        set mes=01
    )

    if !mes!==FEB (
        set mes=02
    )

    if !mes!==MAR (
        set mes=03
    )

    if !mes!==APR (
        set mes=04
    )

    if !mes!==MAY (
        set mes=05
    )

    if !mes!==JUN (
        set mes=06
    )

    if !mes!==JUL (
        set mes=07
    )

    if !mes!==AUG (
        set mes=08
    )

    if !mes!==SEP (
        set mes=09
    )

    if !mes!==OCT (
        set mes=10
    )

    if !mes!==NOV (
        set mes=11
    )

    if !mes!==DEC (
        set mes=12
    )

    ren %%a !x:~20,4!!mes!!x:~15,2!.txt 

    echo !x:~20,4!!mes!!x:~15,2!.txt 

)
0
jimra