Windows 7にはAAA_a001.jpg
、BBB_a002.jpg
、CCC_a003.jpg
などのファイルがあり、バッチを使用してこれらのファイルの名前をa001_AAA.jpg
、a002_BBB.jpg
に変更しようとしています、a003_CCC.jpg
。
_
の間でコンテンツを交換するだけです。
私はしばらく探していましたが、まだこれを行う方法がわかりません。誰でも助けることができますか?ありがとう。
@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」に名前が変更されます
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
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
)
このスクリプトを思いついたばかりで、テストしませんでした。詳細については、 this および that をご覧ください。
_
の位置と長さと拡張子がわからないと仮定したい場合は、_
のインデックスをチェックするためにforループで何かをすることができると思います。 .
のインデックスをgoto
にラップして機能させる。その問題を喜んで経験する場合は、少なくともWindowsPowerShell(またはCygwin)を使用するか(独自の目的で)、より高度なスクリプト言語をインストールする(Python/Perlを考える)ことをお勧めします。方法。
コードで名前を変更します
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
)