ただの備忘記録

忘れないように記録を残します。忘れるから記録に残してます。そして、その記録が役立つといいかな。

バッチファイル(変数の結合とパラメータ)

2016年01月11日 | Windows

変数にパス名を入れてスペースやダブルクォーテーションがある場合の注意点をメモしておく。

■バッチファイルで変数を使う

set 変数名=文字列

文字列がパス名でスペースが含まれる場合、スペースで区切られて別のパラメータとして処理されてしまう。
例えば

set pathA=\dir01\00 category\files
set pathB=\data backup\files
robocopy %pathA% %pathB%

2つの変数のそれぞれにペースがあるため、robocopyを実行すると4つのパラメータを渡したことになる。
これを防ぐためには""を使う。

set pathA="\dir01\00 category\files"
set pathB="\data backup\files"

■変数の文字列を結合する

set 変数名=%変数1%%変数2%

次の場合、問題が発生する。

set pathA="\dir01\00 category"
set pathB="\files"
set pathAB=%pathA%%pathB%

pathAとpathBを””で囲っているため、pathABは「"\dir01\00 category""\files"」となる。
これではcopyやrobocopyにパラメータとして渡すときに正しく処理されない。

解決案①

set pathA=\dir01\00 category
set pathB=\files
set pathAB="%pathA%%pathB%"

変数を結合してから""で囲む。

解決案②

set pathA="\dir01\00 category"
set pathB="\files"
set pathAB=%pathA:~0,-1%%pathB:~1%

結合時に文字列の一部を抜き出す。
上記例では、pathAは先頭(0番)から後ろの1文字前(-1番)までを取るので、後ろの"がなくなる。
同様にpathBは先頭1文字目の後(1番)から最後までを取るので、先頭の"がなくなる。

pathABは「"\dir01\00 category\files"」となる。

解決策③

set pathA="\dir01\00 category"
set pathB="\files"
set pathAB=%pathA%%pathB%
set pathAB=%pathAB:""=%

3行目までは問題のあるままで、4行目で解決させる。
ちょっと強引かもしれないが、""を空のテキストに置き換えてしまう。

解決案④

set pathA=\dir01\00 category
set pathB=\files
set pathAB=%pathA%%pathB%

copy *.* "%pathAB%"

変数に入れるときではなく、命令のパラメータとするときに""で囲う。

おそらく④が標準的な記述方法ではないだろうか。



最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
サムライ鉄の道グローバル (ソリューション業務)
2024-11-21 02:51:35
最近はChatGPTや生成AI等で人工知能の普及がアルゴリズム革命の衝撃といってブームとなっていますよね。ニュートンやアインシュタイン物理学のような理論駆動型を打ち壊して、データ駆動型の世界を切り開いているという。当然ながらこのアルゴリズム人間の思考を模擬するのだがら、当然哲学にも影響を与えるし、中国の文化大革命のようなイデオロギーにも影響を及ぼす。さらにはこの人工知能にはブラックボックス問題という数学的に分解してもなぜそうなったのか分からないという問題が存在している。そんな中、単純な問題であれば分解できるとした「材料物理数学再武装」というものが以前より脚光を浴びてきた。これは非線形関数の造形方法とはどういうことかという問題を大局的にとらえ、たとえば経済学で主張されている国富論の神の見えざる手というものが2つの関数の結合を行う行為で、関数接合論と呼ばれ、それの高次的状態がニューラルネットワークをはじめとするAI研究の最前線につながっているとするものだ。この関数接合論は経営学ではKPI競合モデルとも呼ばれ、トレードオフ関係の全体最適化に関わる様々な分野へその思想が波及してきている。この新たな科学哲学の胎動は「哲学」だけあってあらゆるものの根本を揺さぶり始めている。こういうのは従来の科学技術の一神教的観点でなく日本らしさとも呼べるような多神教的発想と考えられる。
返信する

コメントを投稿