ソフトウェア タスクを実行するために顧客に配布する予定のバッチ ファイルがあります。
これらはフォルダーとして、または.zip
内部のファイルとともに配布されます。内部にはバッチ ファイルと、バッチを実行するために必要なファイルを含む別のフォルダーがあります。
通常、バッチを作成するときは、ファイルがあるパスを入力します。しかし、ファイルの場所がわかりません。ファイルはマスター フォルダー内に保持されますが、ファイルを実行するには、バッチでそのフォルダーを見つける必要があります。
たとえば、デスクトップにマスター フォルダーがあり、それを実行する場合は、次のように"C:\Users\Username\Desktop"
実行する必要があります。その場所にバッチ CD があるはずです。
しかし、ドキュメントから実行する場合はどうなるでしょうか? ユーザー名がわからないため、何らかの方法でバッチでこれを見つけられるようにする必要があります。コードや手順があれば助かります。
ベストアンサー1
bat ファイルを起動すると、作業ディレクトリは起動されたディレクトリ (「マスター フォルダー」) になるため、ファイルの場所を知る必要はありません。そのため、次の構造になっているとします。
.\mydocuments\folder\mybat.bat
.\mydocuments\folder\subfolder\file.txt
ユーザーが「mybat.bat」を起動すると、作業ディレクトリは「.\mydocuments\folder」になるため、スクリプトにサブフォルダ名を記述するだけで済みます。
@Echo OFF
REM Do anything with ".\Subfolder\File1.txt"
PUSHD ".\Subfolder"
Type "File1.txt"
Pause&Exit
とにかく、作業ディレクトリは「%CD%」変数に保存され、bat が起動されたディレクトリは引数 0 に保存されます。任意のコンピューター上の作業ディレクトリを知りたい場合は、次のようにします。
@Echo OFF
Echo Launch dir: "%~dp0"
Echo Current dir: "%CD%"
Pause&Exit