[前の記事]« for /f の eol=のデフォルト値をクリアするには
[次の記事]バッチファイルのウィンドウに任意のタイトルをつけるには »

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

▲カテゴリー「FOR .. IN ( ) DO..」索引へ
▲カテゴリー「遅延環境変数の展開」索引へ

[NT系]環境変数の中身がFORコマンド内でECHOされない

333.
環境変数の中身をECHO
2005年03月14日(月) 15時47分
ベベト
●DOS/Windowsのバージョン↓
2000Pro

環境変数の中身を表示するだけなのですが。。

AAA.batの中身
------------------------------
    for /f %%A in (APServer.lst) do (
    set SELECTAP=%%A
  echo %SELECTAP%←★ここが表示されない★
    call :FUNCTION_CREATEFTPFILE
    call :FUNCTION_FTP
    del  /q *.ftp    
    )
    goto :EOF

:FUNCTION_CREATEFTPFILE
echo open %SELECTAP% >>XXX.ftp
echo ftpuser >>XXX.ftp
echo ftppassword >>XXX.ftp
echo bye >>XXX.ftp
exit /b

:FUNCTION_FTP
ftp -s:XXX.ftp
接続サーバ名:%SELECTAP% >>YYY.log
exit /b
------------------------------

APServer.lstの中身
------------------------------
SERVER1
SERVER2
------------------------------

AAA.batを実行すると
XXX.ftpファイルが生成され
APServer.lstにあるサーバにFTP接続されるのですが
上記の★のところがどうしても表示されないです。
%SELECTAP%の表示にはなにか制限があるのでしょうか??
334.
Re:環境変数の中身をECHO
2005年03月14日(月) 16時33分
otn
>●DOS/Windowsのバージョン↓
>2000Pro

>環境変数の中身を表示するだけなのですが。。

>AAA.batの中身
>------------------------------
>    for /f %%A in (APServer.lst) do (
>    set SELECTAP=%%A
>  echo %SELECTAP%←★ここが表示されない★
>    call :FUNCTION_CREATEFTPFILE
>    call :FUNCTION_FTP
>    del  /q *.ftp    
>    )
>    goto :EOF

set /? にそれとなく説明がありますが、% % による環境変数展開は、構文解析時になされます。つまり、for の実行前に展開されちゃいます。forの実行前はおそらくSELECTAPは空ですよね?

実行時に展開するためには、! ! を使った遅延展開を使う必要があります。これも set /? に書いてあります。
setlocal EnableDelayedExpansion
for /f %%A in (APServer.lst) do (
set SELECTAP=%%A
echo !SELECTAP!
(以下略)

他の手段としては、
・echoをサブルーチン化してサブルーチン内でechoする
・set SELECTAP で表示する
・(アンドキュメントだが) call echo %%SELECTAP%% とする
・この例のケースだと、echo %%A にする
335.
Re2:環境変数の中身をECHO
2005年03月14日(月) 16時51分
ベベト
otnさん いつもありがとうございます。
あっさり解決してしまいました。
これからもよろしくお願いします。
 
 


カテゴリー「FOR .. IN ( ) DO..」索引へ
カテゴリー「遅延環境変数の展開」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

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

ひとつ前の投稿は「for /f の eol=のデフォルト値をクリアするには」です。

次の投稿は「バッチファイルのウィンドウに任意のタイトルをつけるには」です。

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

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