フォロトップ:この会議室が所属するフォロのトップページへ移動します 会議室トップ:この会議室のトップページへ移動します トピック一覧:この会議室内のトピックを一覧表示します おすすめレビュー:この会議室に関連付けられたレビューを一覧表示します 発言者一覧:この会議室に発言したことのあるメンバーを一覧表示します 会議室に参加:この会議室への参加登録が出来ます
文字サイズ変更: [] [] []
お目当てのフォロへGO! 
オフィシャル
エンタメ
スポーツ
文化・趣味
コンピュータ
くらしと健康
芸術・学問
ビズと社会
地域・年代
ノンジャンル


2008年08月02日
20:30
【89】  forでren処理をする時、処理済でも再処理される
【目的】
フォルダ内にある全ファイル名の先頭に「頭」とつけたい。
尚、フォルダ内には「a1.txt~a4.txt」の4つのテキストファイルがあります。

【書いた式】
@echo off
setlocal

for %%a in (*.txt) do (ren "%%a" "頭%%a")

endlocal
exit

【実行後】
a1.txt → 頭a1.txt
a2.txt → 頭a2.txt
a3txt → 頭a3.txt
a4.txt → 頭a4.txt
頭a1.txt 頭頭a1.txt

【問題】
最初に処理されたファイル(ここではa1.txt)が2回処理される。
「頭」等の全角文字ではなく、「0802」等の半角英数だとこの現象は回避される気がします。
かといって全角文字でも回避されることがあったりして、よくわかりませんが…。
素人見解ですみません。


お分かりになる方がいらっしゃいましたら、どうかご教授頂けると助かります。
どうぞ宜しくお願いします。
(環境:windowsXP)
コメント
2008年08月04日
18:05
dirコマンドで一度リストアップしてやれば
2重に処理されることは無いと思います。

for /f %%a in ('dir /b *.txt') do (ren "%%a" "頭%%a")

あとは、何度も実行して「頭頭頭a1.txt」とならないように
行頭に「頭」が含まれないファイルのみリストアップして
リネームするようにしてみるのも良いかも知れません。

SET WORD="頭"
for /f %%a in ('dir /b *.txt ^| findstr /b /v %WORD%') do ren "%%a" "%WORD%%%a"
すべて表示 1番~1番を表示
 コメントするにはfolomyへの会員登録ならびにログインが必要です。 folomyに入会する
ログインする(すでに登録済みの方)
----