アプリ版:「スタンプのみでお礼する」機能のリリースについて

お知恵のある方、教えて下さいませ。
現在、会社でバッチを作成しているのですが、過去ログを参照しても、
出来ないので相談させて下さい。
OS:Windows2000
概要:
1、コピー元からコピー先へXCOPYし、
2、そのコピーして来たものの中に「CVS」という文字列が
含まれる物は全て削除
問題点:過去ログにもあったのですが、
ファイル名にスペースが入っていると、for /f は空白タブ区切りで
先頭の一語だけを読み取りファイルを認識してくれない状態です。

ソース:
set cSource_dir="C:\aaa\bbb\ccc"
set cBackup_dir="C:\ddd\eee"
xcopy /y /e /i /h /r %cSource_dir% %cBackup_dir%
dir /a /b %cBackup_dir%> bbb.txt
find /i "cvs" bbb.txt > aaa.txt
for /f "skip=2 delims= " %%A in (aaa.txt) do call :MAIN %%A

:MAIN
set filename=%1
if exist %filename% del /f /a /s %filename%

上記の式ですと、
コピー~cvs2.txtの様に半角スペースが無い場合は
削除出来るのですが、
コピー ~ cvs4.txtの様に、半角スペースが複数ある場合、
どうしても削除が出来ません・・

どなたか、助けて頂けませんかm(__)m
宜しく御願いします。

A 回答 (2件)

> for /f "skip=2 delims=" %%A in (%cDir_temp%) do call :MAIN %%A



ここ、:MAIN の後ろの %%A が括られてませんけど
写し間違いではないのですね?
であれば、ここも括ってみてはどうなりますか?
    • good
    • 0
この回答へのお礼

会社で相当追い込まれていたので・・・・
涙が出るくらい嬉しかったですm(__)m

おかげさまで、無事に成功致しました。

本当に本当にありがとうございましたm(__)m

お礼日時:2007/07/18 22:15

> 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%"

でいかがでしょ。

この回答への補足

すみません(><)無理でした。下記が少し、いじり&まだまだ作成段階ですが
正規のソースです。宜しかったら助言を再度いただけますでしょうか・・
@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

度々、申し訳ありませんが、よろしく御願いします。

補足日時:2007/07/18 03:51
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています