ファイル名変更(指定文字を置換)の手順

このQ&Aのポイント
  • powershellを使用してファイル名の変更を行う際、カッコを他の文字に置換する必要があります。
  • バッチ処理でカッコをxxという文字に置換し、ファイル名を変更します。
  • 修正したbatファイルを実行すると、指定したファイルのカッコが置換された新しいファイル名に変更されます。
回答を見る
  • ベストアンサー

ファイル名の変更(指定文字を置換)

powershell(PS)では、カッコ([,])の有るファイル名は利用できません。 そこで、バッチ処理でPSに処理させる下準備でカッコを他の文字(xx)に置換した ファイル名に変名したいと思います。 (PSで処理後に再置換して元のファイル名に戻す予定) 例えば、  [品番001]_Model_s0023.jpeg を  xx品番001xx_Model_s0023.jpeg に変名する。 以前教えてもらったbatを変更して以下のように修正しましたが うまく処理できませんでした。 どのように修正すれば良いでしょうか ? '------------------------------------------------ @echo off rem 該当するファイルを書き換える(カッコ>xx変換) for %%f in ( *.jpeg ) do call :sub "%%f" exit /b :sub set fname=%1 set fname=%fname:[=xx% set fname=%fname:]=xx% ren %1 %fname% goto :EOF

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (740/5640)
回答No.1

記載のバッチ処理で問題なくファイル名は変更できました。 うまく処理できないとのことですが、@echo offをなくして実行してみて、どこがうまくいってないか確認されてみてはどうでしょうか。

NuboChan
質問者

お礼

dell_OKさん、アドバイス感謝します。 コード自体は、問題なく処理されたの事なので もう一度チェックしてみました。 結果として原因は、私の凡ミスでした。 拡張子を確認せずに *.jpegが対象なのに*.jpgを変換しようとしていました。

関連するQ&A

  • サブフォルダ内含め全てのファイル名を一括置換するw

    サブフォルダ内含め全てのファイル名を一括置換するwindowsバッチ処理について ファイル名の「YYYYMM」部分を一括で変換したく以下の様なバッチ文を記載しました。 しかし置換処理がうまくいかず、ファイル名の後ろに入力文字列がくっついてしまいます。 set /p YYYYMM="年月を入力してください(yyyymm形式):" echo %YYYYMM% for /r %%f in ( * ) do call :sub %%f %YYYYMM% pause exit /b :sub echo %2 set fname=%~nx1 set fname=%%fname:YYYYMM=%2%% echo %fname% ren %1 %fname% goto :EOF 環境上、ファイル名リネームソフトやWindows Powershellを使うことができないため、何とかバッチ処理で楽をしたいのですがかなり煮詰まってしまい。。。 どなたかアドバイスをお願いできないでしょうか。 よろしくお願いいたします。

  • DOSのバッチで、テキストファイル中の文字を置換したい

    いつもお世話になっております。 WindwsXPでDOSバッチを使ってテキストファイル中にある文字列1を文字列2に置換したいのです。 ネットをさまよっていて、こんな例を見つけました。 (参考にしたのはここです。http://www.fpcu.jp/dosvcmd/bbs/log/cat3/cat54/2-0391.html) ====================== @echo off if "%1"=="" goto end set fname=%1 copy %fname% org >nul type nul >%fname% for /f "tokens=1* delims=" %%a in ( org ) do (set line=%%a&& call :sub) del org goto end :sub :この1行下の acb=xyz に置換前と置換後の文字列を指定する。 set l=%line:abc=xyz% echo %l%>>%fname% goto :EOF :end ====================== これをsample.batという名前で保存し、DOSのウィンドウでsample < a.txt と打つと、a.txtファイル中の"abc"が"xyz"に置き換わります。 これに手を入れて置換前と置換後の文字列を可変にしたく思い、sub中に set mae=abc set ato=xyz の2行を加え、変数に値を設定するようにしました。 ところが、次の1行の書き変え方がわかりません。 set l=%line:abc=xyz% を set l=%line:%abc%=%xyz%% のように変えてみましたが、うまく動きません。 どなたかご教授いただけませんか。DOSだけでファイル中の文字列の置換ができればset文を使う使わないにはこだわりません。

  • フォルダー内の複数ファイル名を一括で変名するbat

    フォルダー内の複数ファイル名を一括で変名するbatを教えてください。 batは、デスクトップに配置して 処理するフォルダーをD&Dして処理させる形式をとしたいです。 以下のような形式です。  No1 aaaa bbbb [com : *********].zip を  No1 aaaa bbbb.zip に変名する。   (*******は任意の文字列) 例えば、 No1 aaaa bbbb [com : taken2110221100014].zip であれば No1 aaaa bbbb.zip に変名する。 以下が参考になりそうなので https://oshiete.goo.ne.jp/qa/9263608.html 記事中の助言を元に以下のようにコードを修正してみましたが うまく処理できませんでした。 bat(test,bat,test2.bat)のどこを再修正すれば希望の処理ができますか ? 希望は、下記ですが 「batは、デスクトップに配置して 処理するフォルダーをD&Dして処理させる形式をとしたいです。」 batを修正してもこのbatでは、D&Dで処理することは可能で無い場合は アドバイス又は他の参考なりそうなURLを紹介ください。 '------------------------------------------ rem test.bat echo off for /F "delims=" %%f in ('dir /*.mp4') do call :sub "%%f" exit /*.mp4 :sub set fname=%~1 set n=0 :loop call set c=%%fname:~%n%,1%% set /a n=n+1 if "%c%"=="" goto :EOF if "%c%"=="[com" goto break goto loop :break set /a n=n-1 set ext=%~x1 call set newname=%%fname:~0,%n%%% call set newname=%newname%%ext% if "%newname%"=="" goto :EOF if "%newname:~0,1%"=="." goto :EOF ren "%fname%" "%newname%" goto :EOF '-------------------------------------- rem bat2.bat for /F "tokens=1* delims=[com" %%F in ('dir /b *.mp4') do echo move %%F[com%%G %%F.mp4 '--------------------------------------

  • コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換したい

    コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換したい BAT実行や、BATにドロップする程度の操作でファイル名置換したいと思っています。 たとえば、「abcTEST123.txt」というファイルを下記のバッチにドロップすると、 「abctest123.txt」と言うファイル名に置換されます。 for %%A in (*TEST*.txt) do call :sub %%A :sub set A=%1 ren %A% %A:TEST=test% しかし「TEST」をスペースにしてもファイル名の置換はできません。 コマンドプロンプトではスペースは扱えないのでしょうか。 解決策がありましたらご教授願います。

  • Windowsコマンドラインで文字列置換する方法

    Windowsでバッチファイルを作成し、テキストファイルの中の文字列を置換しようとしています。 下記のような内容のバッチファイルを作りました。 ーーーーーーーーー @echo off set fname=.¥change.txt set orgword=bbb set newword=222 copy %fname% orgfile >nul type nul >%fname% for /F %%I in (orgfile) do (set readline=%%I&& call :sub) del org file sub: call set outline=%%readline:%orgword%=%newword%%% echo %outline%>>%fname% go to :eof :end ーーーーーーーーー このバッチを利用して、 change.txt ーーーーーーーーー aaabbbccc ーーーーーーーーー を変換すると、 ーーーーーーーーー aaa222ccc ーーーーーーーーー となってくれますが、 ーーーーーーーーー <aaabbbccc/> ーーーーーーーーー を変換すると、 ーーーーーーーーー ECHO は <OFF> です。 ーーーーーーーーー となってしまいます。 これを、 ーーーーーーーーー <aaa222ccc/> ーーーーーーーーー としたい時にはどのようにしたら良いでしょうか?

  • バッチファイル内置換

    バッチファイルで、置換をしたいのですが、"="と"<"の置換が出来ません。 ping出力を「file.txt」へ保存し、保存した「file.txt」を一行づつ読み出し下記を実行しています。 for /f "delims=" %%a in ( orig ) do ( set line=%%a call :sub ) :sub set tmp=%line% set tmp=%tmp:<=,% set tmp=%tmp:= =,,% set tmp=%tmp:"時間" =,% set tmp=%tmp:ms=,ms% echo %tmp%>>%CSV_Name% goto :EOF :end 置換出来ないのは、"=" と "<"の文字だけが置換出来ません。 ネットで調べたのですが、"^" でエスケープしても、""二重引用部でくくっても、正しく置換でき有ません。

  • 秀丸 置換について

    NASのログをDB取り込み用の、テキスト修正を秀丸で行っているのですが、うまく置換できません。 ○文字列 Jan 12 13:25:19 "NASホスト名" file_smb[17142]: [User:”ユーザー名”(192.168.133.22)] ”File Open””(Read)” /mnt/array1/”フォルダ名”/”サブフォルダ名"/”ファイル名” ※”文字列”の中は変化します。 ○置換後 日時 ,”NASホスト名”,"ユーザー名",”IPアドレス",File Open,(Read),"フォルダ名",”サブフォルダ ファイル名” 【問題】   "(" → ","   ")" → "," で置換をかけていたのですが、ファイル名に"(” ”)"を使われており、一気に置換できません。 出来るかわかりませんが例えば、先頭から100文字目までの、"("を","へ置換する等 うまく置換できる方法をアドバイス頂けましたら幸いです。

  • ファイル名の一部をそのファイル内に置換したい(もしくは連番)

    ファイル名の一部をそのファイル内に置換したいのですが、何か方法はありますでしょうか?(複数ファイル処理で) もしくは置き換えた文字の後ろに連番をつけていきたいのですが。秀丸エディタをよく使用しているのですができないようでベクターなども調べましたが見つかりませんでした。 例:sの後ろの数字を置き換えたとき ファイル名: テスト_s23_p43.txt ファイル内容: 置換前 No, 0 置換後 No, 23

  • マクロで、セル内の文字をファイル名にしたい

    Sub Auto_Close() ' ' CSV作成 Macro ' マクロ記録日 : 2006/7/13 ユーザー名 : 00849 ' ' Fname = Range("I15") ChDir "D:\ファイル\他仕事\リモートメンテナンス\RADIUS設定、エクセル検証" ActiveWorkbook.SaveAs Filename:= _ "D:\ファイル\他仕事\リモートメンテナンス\RADIUS設定、エクセル検証\Fname", _ FileFormat:=xlCSV, CreateBackup:=False ThisWorkbook.Close End Sub  上記のように作ると、ファイル名が「Fname.csv」となってしまいます。  これを、"I15"に打ち込んだ文字をファイル名で表示させるには、どうしたらよいでしょうか?  ほぼ初心者です。  よろしくおねがいします。

  • ファイル名を変数として取り扱いたい

    ファイル名が変更されても正常に動作するようにしたい <処理概要> A.XLS、B.XLS、C.XLSというファイルがあります。 A.XLSにB.XLS、C.XLSのシートを取り込む処理をしています。 マクロはA.XLSで起動、処理しています。 A.XLSのファイル名を変更されても動くようにできるのでしょうか。 ご指導のほど、よろしくお願いいたします。 <ファイルの取り込み処理> For Each fName In FSO.GetFolder(MyFolder).Files If FSO.GetExtensionName(fName) = \\\"xls\\\" And _ FSO.GetBaseName(fName) <> \"A\" Then Set wBook = Workbooks.Open(fName, 0, True) For 番号 = 1 To Worksheets.Count wBook.Worksheets(番号).Copy _ after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Next 番号 wBook.Close False End If

専門家に質問してみよう