• ベストアンサー

バッチコマンドの修飾子について

例えば set hoge=hige echo %hoge:i=a% とすると i が a に置換されて、結果が hage になるということを知ったのですが、これについて詳しいサイト、または書籍があれば教えてください。

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

  • ベストアンサー
  • dscripty
  • ベストアンサー率51% (166/325)
回答No.1

C:\> set /? がすごくくわしいよ?

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

関連するQ&A

  • vimのビジュアルモード

    例えばコメントアウトで // hoge // hige // hage とあったら // hoge // hige // hage 半角スペース入れて全体的に右寄りとなるように まとめてスペース任意個分を入れることは出来ますか?

  • Apache の SSL 設定について

    以下の設定が前提です。 ■ ディレクトリ構成(一部抜粋) /var/www/hoge /var/www/hoge/hage /var/www/hoge/hage/hige ■ httpd.conf(一部抜粋) DocumentRoot /var/www/html Alias /hage /var/www/hoge/hage <Directory "/var/www/hoge/hage"> SSLRequireSSL ErrorDocument 403 "SSL Require -> https://" AllowOverride All Order allow,deny Allow from all </Directory> 【やりたいこと】 ディレクトリ /hage「だけ」に SSL をかけたいです。 【こまっていること】 上記設定ですと、/hage/hige にも SSL がかかってしまいます。 /hage にだけ SSL をかけることはできますでしょうか? (そもそもの設定が間違っている可能性大ですが) よろしくお願いいたします。

  • Windows バッチを Linux へ移植したい

    FOR 文を使ってテキストファイルの中身を変数に格納するバッチファイルがあります。 FOR /F "tokens=1,2* delims==" %%i IN (test.txt) DO SET %%i=%%j [読み込む test.txt の内容] HOGE=A FUGA=B HAGE=C 実行すると、%HOGE% には A、%FUGA% には B、%HAGE% には C が代入されます。 これと同じ処理を Linux のシェルスクリプト(bash)で実現するにはどうすれば良いでしょうか。 while read ~ でやるのかなと思ったのですが、変数の処理がピンと来なくて困っています。 どうかご教授ください。

  • 正規表現で置換

    その1 $str = "ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげ"; ↓ $str = "ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="./foo/faa/fii/xxx.jpg" width="320" height="240" />ほげほげ"; その2 $str = "<img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげ"; ↓ $str = "<img src="./foo/xxxx.jpg" width="320" height="240" />ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="./foo/faa/fii/xxx.jpg" width="320" height="240" />ほげほげ"; このような文字列があった時に、次のように従って置換したいです。 1.imgのタグの内部に、「http://yyy.hoge.jp/hage/hige/xxx.jpg」という文字列があった場合、「./foo/faa/fii/xxx.jpg」という文字列に置き換える。 2.それ以外のURLの場合は置換しない。 3.その1とその2では「xxx.jpg」となっていますが、jpg以外の拡張子の場合も存在する。 4.日本語とURLの位置や個数はバラバラです。 5.URLの中のxxxとyyyは不定の文字列で、hage、hoge、hige、foo、faa、fiiは固定です。 6.使用している言語はPHPです。正規表現を1度だけでできれば理想的ですが、今回は2回に渡った処理でも問題ありません。 以上です。正しく処理できる正規表現、あるいは下記の正規表現の誤りを教えて頂ければ幸いです。 お手数ですが、よろしくお願い致します。 下記の方法では、うまくできませんでした。 $pattern = "/http:\/\/.*?hoge.jp\//"; $replacement = "./"; $str= preg_replace($pattern, $replacement, $str); $pattern2 = '/\/?hage\/hoge/'; $str = preg_replace($pattern2, '/foo/faa/fii', $str);

    • ベストアンサー
    • PHP
  • コマンドプロンプト バッチ|結果を変数に代入する方法

    バッチで、外部のEXEを実行した結果を変数に代入する方法を教えてください。 外部のEXEは hogehoge.exe あいうえお と実施した場合 おえういあ という結果を返します。 たとえば… SET HOGE=hogehoge.exe あいうえお ECHO %HOGE% の結果として おえういあ を表示する という風にしたいです。

  • MSDOSバッチコマンド for-do

    過去31日間、today.dat を保存するバッチコマンドを、WinXPで組みましたが、doループ内で、環境変数:nextday (rename old%%i.dat old%nextday%.dat) が、正しく帰ってきません。 アドバイスお願いします。 :------------------------------------------- @echo off setlocal set maxday=30 set delday=31 cls echo 開始します。 Enter キーを 押してください。 pause > nul echo delete old%delday%.dat for /l %%i in (%maxday%,-1,1) do ( set /a nextday=%%i+1 echo. set nextday echo rename old%%i.dat old%nextday%.dat ) echo. echo copy today.dat old1.dat echo. echo 終了しました。 Enter キーを 押してください。 pause > nul endlocal :-------------------------------------------

  • コマンド履歴が~/.bash_historyに保存されない

    通常、コマンド履歴は~/.bash_historyに保存されるはずだと思っていましたが保存されていないようです、原因がわかりません。 助けて頂けませんでしょうか [root@localhost sub]# su - hoge [hoge@localhost ~]$ ls Desktop i a testdir ec.txt [hoge@localhost ~]$ tail ~/.bash_history set|grep abc abc=`date` set|grep abc echo $abc abc=1 echo $abc abc=$(date) echo $abc alias exit

  • バッチファイル内置換

    バッチファイルで、置換をしたいのですが、"="と"<"の置換が出来ません。 ping出力を「file.txt」へ保存し、保存した「file.txt」を一行づつ読み出し下記を実行しています。 for /f "delims=" %%a in ( orig ) do ( set line=%%a call :sub ) :sub set tmp=%line% set tmp=%tmp:<=,% set tmp=%tmp:= =,,% set tmp=%tmp:"時間" =,% set tmp=%tmp:ms=,ms% echo %tmp%>>%CSV_Name% goto :EOF :end 置換出来ないのは、"=" と "<"の文字だけが置換出来ません。 ネットで調べたのですが、"^" でエスケープしても、""二重引用部でくくっても、正しく置換でき有ません。

  • set コマンドにおけるワイルドカード(*)の制約について

    よろしくお願いします。 OS:Windows XP (プロフェッショナル) MS-DOSコマンドについての質問です。 SETコマンドに文字列の置換機能があるかと思います。 例えば下記のように動きます。 ------------------------------------------------- C:\>set aaa=123456789 C:\>echo %aaa:456=123% 123123789 ------------------------------------------------- ここで、ワイルドカードを使用して下記のようにはできるのですが、 ------------------------------------------------- C:\>set aaa=123456789 C:\>echo %aaa:*9=abc% abc ------------------------------------------------- 下記のように、ワイルドカードを使用して、 「123456789」を「abc」に置換してechoの結果を 「abc」となるようにしたいのですが、結果は 「123456789」のままです。 これは * の使い方がまずいのでしょうか、* を使用する 際の制約が何かあるのでしょうか。 ------------------------------------------------- C:\>set aaa=123456789 C:\>echo %aaa:*345*=abc% 123456789 ------------------------------------------------- ※この質問の目的は、何かを実現したいというのではないです。  MS-DOSでできることをお正月休み中に勉強しています。 アドバイスのほど宜しくお願い致します。

  • バッチファイルのif文の中の計算結果について

    なぜ、結果1が7にならないのでしょうか? ---------- @ECHO OFF set flg=1 set value=2 if %flg%==1 ( set /a value=%value%+5 echo 結果1=%value% ) echo 結果2=%value% ---------- ◆実行結果 結果1=2 結果2=7 ----------