[前の記事]« 存在するアカウント一覧ををテキストファイルで取得
[次の記事]指定したサイズ未満のファイルを一括削除するには »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「EXIST」索引へ
▲カテゴリー「遅延環境変数の展開」索引へ

ファイルの存在確認がうまく動かない

1046.
MAKECABによって生成されたファイルの存在を確認するには?
2006年03月03日(金) 21時09分
銀松
●DOS/Windowsのバージョン↓
Windows2000/XP
(以下ご自由に質問文をお書きください)

はじめまして。
D:\KB\COPYには、WINDOWSの修正プログラムを展開し、
そこから必要なファイルのみを抽出してあります。
それらを、MAKECABによって圧縮しD:\KB\NEWに出力し、
処理が成功したかどうかをバッチ処理でチェックできるようにしたいと思っています。
しかし、

SET KBDIR=D:\KB
FOR /F "USEBACKQ" %%A IN (`DIR /B "%KBDIR%\COPY\*.*" 2^>NUL`) DO (
 SET EXTENSION=%%~xA
 SET EXTENSION=%EXTENSION:~0,3%_
 ECHO %%~nxAを圧縮しています
 MAKECAB /D COMPRESSIONMEMORY=21 /D COMPRESSIONTYPE=LZX /L "%KBDIR%\NEW" "%KBDIR%\COPY\%%~nxA" > NUL
 IF NOT EXIST "%KBDIR%\NEW\%%~nA.%EXTENSION%" (
  ECHO %%~nA.%EXTENSION%の圧縮に失敗しました
  PAUSE
  EXIT
))

としてみたのですが、拡張子の取得がうまくいきません。
EXTENSIONの指定に問題があるようなのですが・・・。
どのようにしたらよいか、アドバイスをいただければ幸いです。
1047.
Re:MAKECABによって生成されたファイルの存在を確認するには?
2006年03月04日(土) 08時26分
YanaKen◆c0rnJ1Q=
銀松さん

>FOR /F "USEBACKQ" %%A IN (`DIR /B "%KBDIR%\COPY\*.*" 2^>NUL`) DO (
> SET EXTENSION=%%~xA
> SET EXTENSION=%EXTENSION:~0,3%_
(以下略)

 一連の処理を( )でくくった中でsetコマンドを使用したり、その結果を参照する場合、「遅延環境変数の展開」を有効にする必要があります。(デフォルトでは無効=先に環境変数部分が実際の文字列に展開されてから実行される=なので、期待した結果が得られません)
 詳細は、set、setlocal、cmdのヘルプなどから情報を得てください。

YanaKen
1049.
Re:MAKECABによって生成されたファイルの存在を確認するには?
2006年03月04日(土) 17時19分
銀松
こんにちは。

> 一連の処理を( )でくくった中でsetコマンドを使用したり、その結果を参照する場合、「遅延環境変数の展開」を有効にする必要があります。 (デフォルトでは無効=先に環境変数部分が実際の文字列に展開されてから実行される=なので、期待した結果が得られません)
> 詳細は、set、setlocal、cmdのヘルプなどから情報を得てください。

初歩的なことだったのですね。
( )内では「%」ではなく「!」で括らないとダメなんですね。勉強になりました。
お蔭様で無事目的を達成できました。
ありがとうございました。
 
 


カテゴリー「EXIST」索引へ
カテゴリー「遅延環境変数の展開」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2006年03月03日 12:24に投稿されたエントリーのページです。

ひとつ前の投稿は「存在するアカウント一覧ををテキストファイルで取得」です。

次の投稿は「指定したサイズ未満のファイルを一括削除するには」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート