AAA_a001.jpg
Windows 7にBBB_a002.jpg
,などのファイルがあり、バッチを使用してこれらのファイルの名前を, ,CCC_a003.jpg
に変更しようとしています。a001_AAA.jpg
a002_BBB.jpg
a003_CCC.jpg
の間でコンテンツを交換するだけ_
です。
私はしばらく探していましたが、まだこれを行う方法がわかりません。誰でも助けることができますか?ありがとう。
AAA_a001.jpg
Windows 7にBBB_a002.jpg
,などのファイルがあり、バッチを使用してこれらのファイルの名前を, ,CCC_a003.jpg
に変更しようとしています。a001_AAA.jpg
a002_BBB.jpg
a003_CCC.jpg
の間でコンテンツを交換するだけ_
です。
私はしばらく探していましたが、まだこれを行う方法がわかりません。誰でも助けることができますか?ありがとう。
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
@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」に名前が変更されます。
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"
それが役に立てば幸い
_
アンダースコアの前後の部分の長さと拡張子を知っていると思います。そうしないと、単純な部分文字列よりも複雑になる可能性があります。
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 を考えてください) をインストールすることをお勧めします。より多くのサポートが得られます。仕方。
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.' }
この 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」に名前が変更されます。