• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:バッチ for /f 空白、スペースが入っていると消せません・・・)

バッチファイルでスペースが含まれる場合の削除方法について

このQ&Aのポイント
  • バッチファイルでスペースが含まれる場合、削除方法について相談です。
  • 質問者は会社でバッチファイルを作成しているが、スペースが含まれるファイルの削除ができないと問題が発生している。
  • 質問文章は具体的なバッチファイルのソースコードと問題点の説明からなっており、スペースが含まれるファイルの削除方法を教えてほしいという内容です。

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

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

> for /f "skip=2 delims=" %%A in (%cDir_temp%) do call :MAIN %%A ここ、:MAIN の後ろの %%A が括られてませんけど 写し間違いではないのですね? であれば、ここも括ってみてはどうなりますか?

nozda
質問者

お礼

会社で相当追い込まれていたので・・・・ 涙が出るくらい嬉しかったですm(__)m おかげさまで、無事に成功致しました。 本当に本当にありがとうございましたm(__)m

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

> for /f "skip=2 delims= " %%A in (aaa.txt) do call :MAIN %%A :MAIN "%%A" > :MAIN > set filename=%1 set filename="%1" > if exist %filename% del /f /a /s %filename% if exist "%filename% del /f /a /s "%filename%" でいかがでしょ。

nozda
質問者

補足

すみません(><)無理でした。下記が少し、いじり&まだまだ作成段階ですが 正規のソースです。宜しかったら助言を再度いただけますでしょうか・・ @echo off rem ------------------------------------------------------------ rem 名称:※バッチ rem 概要:※バッチ rem 引数: rem 注意: rem 修正履歴: rem 2007/07/09 新規作成 rem ------------------------------------------------------------ rem 定数定義 rem ------------------------------------------------------------ rem コピー元 set cSource_dir="C:\aaa\bbb\ccc" rem コピー先 set cBackup_dir="C:\ddd\eee" rem 日付と時刻の取得 set sDate2=%date:~-10% set sDate=%sDate2:/=% set sTime=%time:~0,-3% rem ログファイル名 set cPre_log=%sDate%_im_backup.log rem ログ用区切り線 set cLine=---------------------------------------------------- rem ファイル名一覧を作成 set cDir_temp=aaa.txt rem 表示用文言 set cTitle=[※※※処理] rem cvs文言 set cCVS="cvs" rem 最新ソースファイルコピー(xcopy) rem ------------------------------------------------------------ if not exist %cSource_dir% goto Error echo %cSource_dir% コピー元フォルダ内一覧 >%cPre_log% 2>&1 echo %cLine% >> %cPre_log% 2>&1 dir /a /b %cSource_dir% >>%cPre_log% 2>&1 echo %cLine% >> %cPre_log% 2>&1 xcopy /y /e /i /h /r %cSource_dir% %cBackup_dir% >>%cPre_log% 2>&1 set error_cd=%errorlevel% if not %error_cd%==0 goto Error echo %cLine%>> %cPre_log% 2>&1 rem C:\ddd\eeeフォルダ内一覧出力 rem ------------------------------------------------------------ dir /a /b %cBackup_dir%> bbb.txt rem C:\ddd\eeeフォルダ内CVS検索 rem ------------------------------------------------------------ find /i %cCVS% bbb.txt > %cDir_temp% for /f "skip=2 delims=" %%A in (%cDir_temp%) do call :MAIN %%A :MAIN rem ------------------------------------------------------------ set filename="%1" if exist "%filename%" del /f /a /s "%filename%">> %cPre_log% 2>&1 echo %filename% pause set error_cd=%errorlevel% if not %error_cd%==0 goto Error rem 異常終了 rem ------------------------------------------------------------ :Error rem 日付と時刻の取得 rem set sDate3=%date:~-10% rem set sTime3=%time:~0,-3% rem echo 処理終了日時 %sTime3% %sTime3% rem echo 異常終了しました、%cLogfile%を参照して下さい rem pause rem exit 9 度々、申し訳ありませんが、よろしく御願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • バッチファイルのエラー処理

    困っています。 下記の様な3つで1セットのコピーをバッチで行いたいと考えています。 ◇1 c:\aaa.txt d:\a:\aaa.txt c:\aaa.txt d:\B:\aaa.txt c:\aaa.txt d:\C:\aaa.txt ◇2 c:\bbb.txt d:\a:\bbb.txt c:\bbb.txt d:\B:\bbb.txt c:\bbb.txt d:\C:\bbb.txt ここで、エラー処理を加えて、 c:\aaa.txt d:\a:\aaa.txt がエラーになったら c:\aaa.txt d:\B:\aaa.txt c:\aaa.txt d:\C:\aaa.txt の処理をスキップし、別ファイルに「aaa.txtのコピーを中止しました」と書込み次のファイル「c:\bbb.txt」のコピーを行う。 何度試しても、うまく動きません。 って言うか全然だめです。 誰か教えてください。お願いします。

  • DOSコマンドバッチのFOR文の記述

    FOR文で以下のように記述しています。 SET FILENAME=aaa.txt FOR /F "tokens=1,2" %%i IN (revs.txt) DO SET FILENAME=%%i-%%j.txt & echo %FILENAME% echoで直前でSETした値を表示したいのですが、どうしても変化しません。(aaa.txtのまま) ※%i,%jには正しく値が設定されています。 以下を教えてください。 ・FILENAMEに値を設定する方法 ・コマンドが長い場合に改行する方法(もしあれば) よろしくお願いします

  • 原因不明の半角スペースの追加現象

    今年から仕事でシェルスクリプトでコーディングすることになり初めて触る言語なので日々勉強しているのですが、どうしても解決方法の見つからないものが出てきてしまったので質問させて頂きます。 ファイルから行を読み込んでsql文に追加入力しようとしているのですが、抽出した単語にシングルクォーテーションを付ける際、半角スペースが一文字分シングルクォーテーション内部に出来てしまいます。 以下例です。 aaa.txt←読み込むファイル aaa,bbb,ccc,ddd←ファイル内容の簡略版 ・ ・ ・ #!/bin/sh while read LINE;do CUT1=`echo ${LINE} | cut -d , -f1`←※1 echo \'${CUT1}\'>>bbb.txt←※2 CUT2=・・・       ・       ・   同じことを繰り返す       ・ done<aaa.txt 結果 bbb.txt 'aaa ''bbb ''ccc '・・・ ※1:この部分は少々曖昧ですが、LINEに読み込んだ行の1番目のフィールド(今回の例ではaaa)を抽出してCUT1に入れようとしています。 まだまだ未熟者の為ソースがおかしいかもしれませんが、今回はそのことに関しては気にしないでください。 プログラム自体はきちんと走っています。 問題になっている点は※2の部分で、シングルクォーテーションを付けると勝手に半角スペースが追加されてしまいます。 CUT1には「aaa」と半角スペースのない状態で入っています。 sedを使ってスペースをなくそうかとも考えたのですが、何分データ量がすごい数なので少しでも走らせるプログラムを減らしたいのです。 sed以外で半角スペースをなくす方法はありますでしょうか? また、これはどんな理由で半角スペースが入ってしまうのか原因もわかりますでしょうか? 簡単な質問ですが、ご教授の方よろしくお願いいたします。 一応sedでの半角スペースを削除する方法もご教授頂けたら幸いです。

  • テキストファイル内の半角スペースの削除

    よろしくお願いします。 OS:Windows Server 2003,Windows 2000 Server MS-DOSコマンドによるバッチで、あるテキストファイル(.txt)内 を検索し、半角スペースがあった場合は半角スペースを 削除するというものを検討中です。 あるテキストファイルには、「Dir /s /a <ディレクトリパス>」(★) の結果が出力されています。 ※http://okwave.jp/qa2630050.htmlの「その他問題点」の  回避手段を考えています。 http://www.fpcu.jp/dosvcmd/bbs/log/cat3/cat54/4-0515.htmlを 参考にし下記のようにバッチを組みましたが、★の結果から 半角スペースを削除した内容になりません。 ------- set infile=%1 set outfile=%2 for /f "delims=" %%A in (%infile%) do call :sub "%%A" goto :eof :sub set STR=%~1 set STR=%STR: =% echo.%STR%>>%outfile% ------- 何がまずいのでしょうか? <DIR>という文字列を含んでおり、"<" や ">" を考慮する 必要がある気はしていますが、どのように修正すればよいか、 なかなかうまくいきません。 修正点やアドバイスをいただけると幸いです。

  • バッチ処理でファイルを一つにまとめる

    フォルダ内にツリー状に振り分けられた数千個のファイルのうち その中からエクセルに記載された数百~数千個の同じファイル名のもののみ取り出して 別のフォルダ内に一箇所にコピーして集めたいです。 エクセルのセル、A列には、ファイル名のみ記載されております aaa.txt ccc.txt ggg.txt hhh.txt kkk.txt mmm.png 上記ファイル名だけ書かれている状態で フォルダ構成の例としては mainフォルダ │ ├aフォルダ │└ mmm.png │ ├bフォルダ │└ bbb.txt │ ├cフォルダ │ │ │ ├eフォルダ │ │├ccc.txt │ │└fff.txt │ │ │ └fフォルダ │  ├ddd.txt │  │ │  └gフォルダ │   └aaa.txt │ └dフォルダ  ├eee.txt  └nnn.png 上記のような感じです。 エクセルに記載されているファイル名には、フォルダ内には存在しないものも書かれていることもあります。 またツリー状に振り分けられたフォルダ内のファイル名には重複するものはありません。 移動させたい場所の例としては 外付けHDD_A の中のmainフォルダ内から(ツリー状に振り分けられている) 外付けHDD_B の中のmatomeフォルダ内に移動させたいです(一箇所にあつめる) どちら様かご教授お願いします。

  • バッチファイルの記述内で改行

    メモ帳を使って書いています 「FにあるbbbフォルダをUにコピーする」を試しています 以下ですと問題なく動きます @echo on mkdir U:¥backup robocopy F:¥aaa¥bbb U:¥backup¥bbb /mir /r:1 /w:1 pause 以下ですと「コピー先ディレクトリが指定されていません」となります (コピー元と先を改行しました) (bbbの後ろに半角スペースを入れて、エンター →半角スペースで空白をいれる) @echo on mkdir U:¥backup robocopy F:¥aaa¥bbb      U:¥backup¥bbb /mir /r:1 /w:1 pause 調べていて改行コードの違いかなと…確認しましたが、 メモ帳の名前をつけて保存のときに、 文字コードはANSIです ですので、問題ないかと… (bbbの後ろに半角スペース→エンターも試しましたが同じエラーでした) @echo on mkdir U:¥backup robocopy F:¥aaa¥bbb U:¥backup¥bbb /mir /r:1 /w:1 pause どこを直したら良いでしょうか

  • HTMLで改行するとスペースが開く

    HTMLで改行するとスペースが開いてしまうのですが、 これは仕様なのでしょうか? ・これは開かない aaa<a href="***">bbb</a> 結果:aaabbb ・これは開く aaa(改行) <a href="***">bbb</a> 結果:aaa bbb

    • ベストアンサー
    • CSS
  • msdos for文 パスに!がある時の記述の仕方

    C:\test\dataのフォルダに入っているファイルの数と 最も古いファイルのファイル名は リスト1で取得できますが、 パスに!が入っているC:\test\!dataでは、 リスト2のようにしても、for文の所で、 指定されたファイルが見つかりません。 と表示されてしまいます。 パスに!が入っている時は、 どのように記述すればよいのでしょうか。 ---リスト1------------------------------------ @echo off set folder="C:\test\data\" for /F %%a in ('dir %folder% /a:-d ^| find "個のファイル"') do set num=%%a echo ファイルは %num% 個あります。 for /F %%F in ('dir %folder% /b /o:-d') do set filename=%%F echo 一番古いファイルは %filename% です。 ---リスト1の実行結果-------------------------- ファイルは 50 個あります。 一番古いファイルは test100.txt です。 ---------------------------------------------- ---リスト2------------------------------------ @echo off set folder="C:\test\!data\" for /F %%a in ('dir %folder% /a:-d ^| find "個のファイル"') do set num=%%a echo ファイルは %num% 個あります。 for /F %%F in ('dir %folder% /b /o:-d') do set filename=%%F echo 一番古いファイルは %filename% です。 ---リスト2の実行結果-------------------------- 指定されたファイルが見つかりません。 ファイルは 50 個あります。 指定されたファイルが見つかりません。 一番古いファイルは test100.txt です。 ---------------------------------------------- (実行環境 : Windows7のコマンドプロンプト)

  • コマンド教えてください。

    aaaフォルダにbbbフォルダを中身ごと(bbbフォルダも)コピーしたいのですが xcopy bbb aaa /s と入力するとbbbの中身だけがコピーされます。 bbbフォルダごとaaaの中にコピーしたい場合はどうすればいいのでしょうか。 よろしくお願いいたします。

  • バッチ処理 特定ファイルを除く削除

    環境:XP pro SP3 「test.txt」を基本ファイルとして残しておき、 変数を使って「test20090401.txt」というように、 バッチ処理をした日付が名前に入るように毎日自動コピー を作成しまして、加えて、8日目以降 1週間前の ファイルを自動削除したいのですが、基本の「test.txt」 は残しておきたいのです。 以下の処理だと「test.txt」まで削除されてしまうのですが、 他フォルダへの移動退避以外に「test.txt」を残し、 1週間前のファイルを削除する方法をご教授頂きたく お願い致します。 set yyyymmdd=%date:~-10% set yyyymmdd=%yyyymmdd:/=% set LOG_COUNT_LIMIT=7 cd c:\temp copy test.txt test%yyyymmdd%.txt for /f "skip=%LOG_COUNT_LIMIT%" %%a in ('dir /b /o-n *.txt') do (del %%a)