初めてのバッチ ファイルを作成中ですが、基本的な質問が 2 つあります。Windows7 を使用していますが、管理者として何かを実行する簡単な方法があるかどうか疑問に思っています。現時点では、cmd
検索バーに入力して をクリックするだけですctrl + shift + enter
。ファイルを右クリックして管理者として実行することを選択できますが、これをバッチ ファイルの一部にできるかどうか疑問に思っています。2 つ目の質問は、開いているプログラムに引数を渡す方法です。現時点では、次のコードを使用しています。
ECHO OFF
ECHO This will export a shapefile from my postgresql database
PAUSE
::START "pgsql2shp export" "C:\Program Files (x86)\PostgreSQL\9.1\bin\pgsql2shp.exe" [-f 'D:\test.shp' -h localhost -u postgres -p 5434 spatial_data 'SELECT * FROM public.energy']
::START "pgsql2shp export" "C:\Program Files (x86)\PostgreSQL\9.1\bin\" "-f 'D:\test.shp' -h localhost -u postgres -p 5434 spatial_data 'SELECT * FROM public.energy'" "pgsql2shp.exe"
START "pgsql2shp export" "C:\Program Files (x86)\PostgreSQL\9.1\bin\pgsql2shp.exe" "-f 'D:\test.shp' -h localhost -u postgres -p 5434 spatial_data 'SELECT * FROM public.energy'"
PAUSE
ECHO shpfile complete
PAUSE :: requires user input to end
次のディレクトリに cd した後、次のコマンドをコマンド ラインに貼り付けてこのファイルを実行しました。C:\Program Files (x86)\PostgreSQL\9.1\bin
>pgsql2shp.exe -f D:\test.shp -h localhost -u postgres -p 5434 spatial_data "SELECT
* FROM public.energy"
バッチ ファイル コードが新しい端末でエラーを出しますが、読み取る前にエラーが消えてしまい、何が問題なのかわかりません。
答え1
コマンドrunas
は、この機能を提供します。このコマンドを使用すると、他のユーザーとして任意のプログラムを実行できます。
runas /noprofile /user:mymachine\administrator cmd
上記の引用からわかるように、リストから適切なユーザーを指定するだけで、そのユーザーとして実行できます。
この方法の根本的な問題は、パスワードを a) 手動で入力する必要がある (ユーザーが管理者ユーザーでない場合)、または b) コマンドでパスワードが公開されるという事実ですrunas
。
他にもユーティリティはあります:
elevate
もその一つです。ここからダウンロードできます: ウィンアビリティエレベートこのプログラムを使用すると、基本的に、管理者以外のコマンド プロンプトからでも、昇格されたユーザーとして任意のコマンドを実行できます。
2 番目の質問に答えると、スクリプトに情報を渡すときは、適切なコマンド引数構文を使用する必要があります。
Z:\Users\Phillip>copy con go.cmd
@echo off
echo/Passed First Parameter: %1
echo/Passed Second Parameter: %2
echo/
echo/Pased Third Formatted Parameter: /d:%3
echo/
^Z
1 file(s) copied.
Z:\Users\Phillip>go yes no ok
Passed First Parameter: yes
Passed Second Parameter: no
Pased Third Formatted Parameter: /d:ok
構文%1, %2, %3
はプログラムに渡される実際のパラメータを参照します。これには、情報が有効なファイル名またはテキスト エントリとしてウィンドウにドロップされる限り、ファイル名、プログラムなどが含まれます。
上記と同じコマンド構文は、スペースを含むコマンド ライン パラメータを渡す場合にも適用されます。
Z:\Users\Phillip>go yes no "asdfasdfasdf asdf as dfa sdf "
Passed First Parameter: yes
Passed Second Parameter: no
Pased Third Formatted Parameter: /d:"asdfasdfasdf asdf as dfa sdf "
ただし、ドラッグ アンド ドロップする場合は、実際に%3
パラメータを引用符で囲む習慣を身に付ける必要があります (必ず最初に試してください。引用符が埋め込まれた状態で合格するシステムもあれば、そうでないシステムもあるため、最初にテストすることをお勧めします)。