[前の記事]« [WIN98]テキストファイル内のデータを変数にセットしたい
[次の記事]ホスト名からIPアドレスを取得してファイルに記録したい »

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

▲カテゴリー「SET, PATH, %環境変数%」索引へ

[NT4]環境変数の指定部分を別の環境変数で置換する方法

737.
setで文字列の指定の場所に変数を入力
2005年09月14日(水) 14時31分
カッパ
●DOS/Windowsのバージョン↓
WindowsNT

setコマンドで、指定の文字列に変数を代入しようとしているのですが、Win2000では下の文が使えたのですが。
NTで同様の処理が出来る下の文の代わりは有りますでしょうか?

「abc.txtのabcの部分に変数Bを入力」
set moji=abc.txt
setlocal ENABLEDELAYEDEXPANSION
set moji=!moji:abc=%B%!
setlocal DISABLEDELAYEDEXPANSION
738.
Re:setで文字列の指定の場所に変数を入力
2005年09月14日(水) 19時00分
otn
>●DOS/Windowsのバージョン↓
>WindowsNT
>
>setコマンドで、指定の文字列に変数を代入しようとしているのですが、Win2000では下の文が使えたのですが。
>NTで同様の処理が出来る下の文の代わりは有りますでしょうか?
>
>「abc.txtのabcの部分に変数Bを入力」
>set moji=abc.txt
>setlocal ENABLEDELAYEDEXPANSION
>set moji=!moji:abc=%B%!
>setlocal DISABLEDELAYEDEXPANSION

なんと。NTには遅延展開が無いんですね。

call set moji=%%moji:abc=%B%%%

はどうでしょうか?これがだめなら、

echo set moji=%%moji:abc=%B%%%>tmp.bat
call tmp.bat
747.
Re:setで文字列の指定の場所に変数を入力
2005年09月16日(金) 10時02分
カッパ
oynさん、お返事ありがとうございます。
返信遅くなりました

教えていただいた、文章で試してみたのですが

set moji=abc.txt
set B=yyy
call set moji=%%moji:abc=%B%%%
echo %moji%

表示しますと、%.txtB%%% と出てしまいました。
752.
Re:setで文字列の指定の場所に変数を入力
2005年09月16日(金) 13時29分
otn
>oynさん、お返事ありがとうございます。
>返信遅くなりました
>
>教えていただいた、文章で試してみたのですが
>
>set moji=abc.txt
>set B=yyy
>call set moji=%%moji:abc=%B%%%
>echo %moji%
>
>表示しますと、%.txtB%%% と出てしまいました。

NTでは駄目ですか。tmp.batを使うほうはどうですか?

あと、このケース(置き換え対象が先頭)だけに限れば、
set moji=%B%%moji:abc=%
とか、
set moji=%B%.%moji:*.=%
という方法もありますが。
755.
Re:setで文字列の指定の場所に変数を入力
2005年09月17日(土) 09時19分
カッパ
tmp.batも試してみたのですが、同じ表示結果になってしまいました。やはりNTでは無理があるのでしょうか

変更したい所の内、数ヶ所は置き換え対象が先頭でしたので、set moji=%B%.%moji:*.=% を使ってみたと思います、ありがとうございます。
760.
Re:setで文字列の指定の場所に変数を入力
2005年09月17日(土) 21時35分
otn
>tmp.batも試してみたのですが、同じ表示結果になってしまいました。やはりNTでは無理があるのでしょうか

もしかして、バッチファイルにせずに、コマンドプロンプトで直接打ち込んでませんか?

バッチファイルとコマンドプロンプト直接では文法が違いますよ。
761.
Re:setで文字列の指定の場所に変数を入力
2005年09月19日(月) 14時40分
カッパ
こんにちは、otnさん

バッチファイルに

set a=abc.txt
set B=\\\
echo set moji=%%moji:abc=%B%%%>tmp.bat
call tmp.bat
echo %moji%
pause

と書き込み実行してみたのですが、
出来上がったtmp.batには
set moji=%moji:abc=\\\% と正常に行っているのでが
call tmp.bat で呼び出した時になぜか
set moji=:abc=\\\ と呼んでしまうみたいで
結果表示が :abc=\\\ になってしまいました
763.
Re:setで文字列の指定の場所に変数を入力
2005年09月19日(月) 20時18分
otn
>バッチファイルに
>
>set a=abc.txt
>set B=\\\
>echo set moji=%%moji:abc=%B%%%>tmp.bat
>call tmp.bat
>echo %moji%
>pause
>
>と書き込み実行してみたのですが、
>出来上がったtmp.batには
>set moji=%moji:abc=\\\% と正常に行っているのでが
>call tmp.bat で呼び出した時になぜか
>set moji=:abc=\\\ と呼んでしまうみたいで
>結果表示が :abc=\\\ になってしまいました

最初が間違ってますね。
set moji=abc.txt
でしょう。

上に書いてあるとおりだと、tmp.bat 実行時点で、moji が未定義なので、abc=\\\ になります。
:abc=\\\ にはならないと思うのですが、「:」ついてました?
773.
Re:setで文字列の指定の場所に変数を入力
2005年09月21日(水) 09時32分
カッパ
otnさん、こんにちは
失礼しました私のコマンドの入力間違いでした
tmp.batを使う方法で見事成功しました、ありがとうございます
 
 


カテゴリー「SET, PATH, %環境変数%」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

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

ひとつ前の投稿は「[WIN98]テキストファイル内のデータを変数にセットしたい」です。

次の投稿は「ホスト名からIPアドレスを取得してファイルに記録したい」です。

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

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