次の構造から、フォルダに含まれるファイルの名前を自動的に変更するバッチファイルを作成しようとしています:A12345678.textornumbers.textornumbers.txtより単純なもの:A12345678.txt
私はこのようなことを試みました:
@echo off
ECHO Renaming files
Pause
:begin
ECHO Renaming txt files
for /r %%x in (A*.*.*.txt) do (REN "%%x" A*.txt)
ECHO Renaming finished
:end
pause
done
エラーは返されませんが、何も返されません...
編集:
問題は別の方法で見られる可能性があります。最初の9文字と拡張子を残してファイルの名前を変更したいと思います。
私はここで同様の質問を見ました: ファイル名から文字を削除する
私はこれを持っているように私のケースに修正して調整しました:
@echo off
ECHO Renaming files
Pause
:begin
REM setlocal enabledelayedexpansion (the result is the same with and without this line)
set X=9
ECHO Renaming files
for /r %%f in (*.txt) do if %%f neq %~nx0 (
set "filename=%%~nf"
set "filename=!filename:~%X%,-%X%!"
ren "%%f" "!filename!%%~xf")
ECHO Done
ECHO Processing finished
:end
pause
done
しかし、結果は次のとおりです。
Blockquote!filename!.txt
これはdirectoyの最初の画像用であり、他の画像にはエラー(このようなファイルはすでに存在します)です。
編集2:
インターネットで見つけた返信やその他の情報のおかげで、私が持っていた解決策は次のとおりです。ファイル名の最後の文字を削除します。最初の9文字を残したいからです。
@echo off
ECHO renaming files
ECHO.
Pause
:begin
set ext=QUB
set num=17
FOR /f "tokens=*" %%f in ('dir /b /a *.%ext%') do call :lab %%f
ECHO Done
pause
Exit
:lab
set original=
set original=%*
set newname=
call set newname=%%original:.%ext%=%%
call set newname=%%newname:~0,-%num%%%.%ext%
if "%newname%"==".%ext%" (goto :eof)
ren "%original%" "%newname%"
ECHO %newname%
goto :eof
これは私のコードではありませんが、他の人から使用したソリューションです(Carlitos.dllによる)。同様の問題を抱えている他の人にも役立つことを願っています。あなたのアイデアと助けてくれてありがとう!