No. | 質問・回答 | おれい |
|
[123442] バッチ for /f 〜 での半角括弧のエスケープについて |
|
|
使用しているOS: Windows 7
使用しているPCのメーカー/機種/型番:
関係するアプリケーション名/バージョン:
関係する機器の機種名/型番:
エラーメッセージなど(原文のまま):
その他:
はじめまして、よろしくお願いします。
そもそも、
対象フォルダのJPGファイルをサイズ順にソートして連番リネームしたいのです。
ところが、
対象フォルダのJPGファイル名に半角括弧が付いていると、
以下のように途中で切れて取得されてしまいます。
057(1).jpg → 057
半角括弧のエスケープができれば良いのですが、
このような場合どうやってエスケープするのでしょうか。
念のため中間ファイルにリダイレクトしてみると、
DIRの時点では半角括弧は取得できているようです。
連番リネーム方法はこちらを参考にさせていただきました。
http://hoge.sub.jp/blog/archives/2009/08/20090827_0.html
以上よろしくお願いします。
以下はバッチファイルの内容です。
@echo off
setlocal enabledelayedexpansion
::スペース対策で「"」を付ける
set "DIR_HOME=%~dp0"
set "DIR_TGET=C:\Users\xxxxxx\Pictures\test\"
set "WRK_FILE=%DIR_HOME%sort.txt"
set IDX=0
set PAD=6
::対象フォルダのJPGファイルをサイズ順にソートして連番リネーム
for /f %%i in ('dir /b /o:s "%DIR_TGET%*.jpg"') do call :SUB1 "%%i"
::中間ファイルにリダイレクトしてみる
::dir /b /o:s "%DIR_TGET%*.jpg" >%WRK_FILE%
::for /f %%i in (%WRK_FILE%) do call :SUB1 "%%i"
pause
endlocal
exit /b 0
::-------------------------
::連番リネームサブルーチン
::-------------------------
:SUB1
set /a IDX=%IDX% + 1
set NUM=00000%IDX%
::echo !NUM:~-%PAD%!
::値確認
echo %DIR_TGET%%~1
::わざとエラーにしてみる
::%DIR_TGET%%~1
::ここでリネームする予定
exit /b 0
あやたか (未登録) 2012年10月21日16:07
|
|
|
|
[123443] |
自己解決しました。
エスケープ以前に書き方に問題があったのですね。
for /f %%i in ('dir /b /o:s "%DIR_TGET%*.jpg"') do call :SUB1 "%%i"
↓
for /f %%i in ('dir /b /o:s "%DIR_TGET%*.jpg"') do (
call :SUB1 "%%i"
)
一緒に考えてくださった方々。
ありがとうございました。
あやたか (未登録) 2012年10月21日18:12
|
|
|
|
( 参照数:6287 日平均:1.6 ) |
|
〜 回答の受付を終了しました 〜 |