1

「Server1\StoreDB」を含むように、DOS バッチ ファイルに文字列変数を作成する必要があります。

私のStoreDBはデータベースへのクエリから来ているので、現在、私のスクリプトは次のようになっています:

set Instance=%1
set path1="Server1\"
set "CompletePath=%path1%%Instance%"

しかし、これは「Server1\StoreDB」を返しません。「StoreDB」のみを返します

ここで少し助けてください。これらの DOS コマンドは初めてです。ありがとうございました。

4

2 に答える 2

2

コードを言い換えていると思われます。表示されている行の一部は、実際には括弧または連結されたコマンド内にあるより大きな構造の一部です。

%var%行が解析されると展開され、括弧で囲まれたコードのブロックが一度に解析されます。変数が設定され、同じコード ブロック内で展開される場合、展開された値は、コード ブロックが解析される前に存在していた値です。

!var!解決策は、 を使用して有効にする必要がある遅延展開を使用することSETLOCAL EnableDelayedExpansionです。

@echo off
setlocal enableDelayedExpansion
set "var=original"
(
  set "var=new"
  echo %%var%% in block = %var%
  echo ^^!var^^! in block = !var!
)
echo %%var%% after block = %var%
echo ^^!var^^! after block = !var!

- 出力 -

%var% in block = original
!var! in block = new
%var% after block = new
!var! after block = new
于 2013-06-20T15:14:00.927 に答える
2

引用符に問題がある/潜在的な問題があります。潜在的な引用符を削除するには、%1 の代わりに %~1 を使用してください。2 行目の引用符の配置が正しくありません。

set Instance=%~1
set "path1=Server1\"
于 2013-06-20T03:52:15.483 に答える