23

AAA_a001.jpgWindows 7にBBB_a002.jpg,などのファイルがあり、バッチを使用してこれらのファイルの名前を, ,CCC_a003.jpgに変更しようとしています。a001_AAA.jpga002_BBB.jpga003_CCC.jpg

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

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

4

8 に答える 8

47

RENコマンドを使用

Renですrename

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

于 2012-12-23T17:57:12.090 に答える
11
@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」に名前が変更されます。

于 2012-12-23T18:49:31.737 に答える
8

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"

それが役に立てば幸い

于 2013-11-09T06:39:36.410 に答える
1

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

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
)

このスクリプトを思いついたばかりで、テストはしていません。詳細については、これそれを確認してください。

_と長さと拡張子の位置がわからないと仮定したい場合は、 for ループを使用して のインデックスをチェックし_、次に の最後のインデックスをチェックして、それ.を でラップしてgoto、それを機能させます。そのような問題を解決する意思がある場合は、WindowsPowerShell (または Cygwin) を少なくとも (自分のために) 使用するか、より高度なスクリプト言語 (Python/Perl を考えてください) をインストールすることをお勧めします。より多くのサポートが得られます。仕方。

于 2012-12-23T18:50:52.723 に答える
0

PowerShell の方法は私にとってはうまくいき、理解しやすく、変更しやすくなっています。rename-item : Source and destination path must be differentただし、少し変更するまでのようなエラーが発生しました。フォルダのみのファイルの名前を変更するには:

ディレクトリ | Where-Object {$ .Name -match 'replaceMe'} | Rename-Item -NewName { $ .Name -replace 'replaceMe','myNewText' }

フォルダーとサブフォルダーのファイルの名前を再帰的に変更するには:

Get-ChildItem -Recurse | Where-Object {$ .Name -match '.Core.'} | Rename-Item -NewName { $ .Name -replace '.Core.','.Framework.' }

于 2021-06-07T09:24:32.927 に答える
0

この 1 つのコードを試すことができます。

echo off
cd D:\TEMP
for %%A IN (*.jpg) do (
 call :dothings "%%A"
)
cd D:\2
goto :eof

:dothings
set A=%1
set P=%A:~1,12%
set Q=%A:~14,4%
set B="%Q% %P%.jpg"
ren %a% %b%
goto :eof

たとえば、「Untitled-227 1965.jpg」から「1965 Untitled-227.jpg」に名前が変更されます。

于 2021-08-21T08:42:46.633 に答える