4

「Bat to Exe Converter」を使用して、バッチ ファイルを exe 形式に変換しています。

今、私はいくつかの問題に直面しています。何かを変換し、「作業ディレクトリ」を「現在のディレクトリ」に設定し、exe をecho onモードで起動すると、exe のディレクトリに特定のファイルがあるかどうかを確認するために、次のようになります。

the actual command: if not exist "%~dp0\file.txt" goto :nofile

output: if not exist "C:\Users\MyUser\AppData\Local\Temp\4CBC\\file.txt" goto :nofile

誰でもこれで私を助けることができますか?一時ディレクトリに入れたくありません。exeのディレクトリに入れたいです。

ありがとう。

4

9 に答える 9

2

作者がBat から Exeに変更することなく、次の 2 つのオプションがあると思います。

  1. %~dp0 にアクセスする必要をなくす

    おそらく、 Bat to Exefile.txtの include オプションを使用して EXE ファイルにマージできます。その場合、コンパイルされたexeを実行すると、現在のディレクトリに自動的に解凍され、."file.txt"%CD%\file.txt

  2. 外部から取得%~dp0し、コマンド ライン パラメータとして exe に渡します。

    batこれは、コンパイル済みのメイン バッチ ファイルと同じディレクトリにある単純なスターター ファイルによって実行できます。このスクリプトには次の行が含まれている必要があります

    YourCompiled.Exe %~dp0% %%* 
    

    コンパイルされた exe は、%1 からディレクトリを取得します。したがって、すべてを 1 つの exe にパックすることはできませんが、その主要部分は、おそらくそれで十分です。

于 2010-01-02T19:45:34.900 に答える
0

まあ、どうやらあなたのバッチからexeへのコンバーターは単にバッチファイルをパックし、実行前に一時ディレクトリにそれを抽出します。非常に単純で、間違いを犯しにくいですが(バッチファイルを実際に理解する場合と比較して)、説明しているようなエラーが発生します。

最善の策は、おそらく別のバッチからexeへのコンバーターを使用することです。それらのいくつかは実際にはもう少し洗練されています。

于 2010-01-02T21:14:31.103 に答える
0

これは 2.5 歳の被験者ですが、これに対する回答があるので、たまたま検索でこれを見つけた人のために投稿しています。


Fatih Kodak によって書かれた B2ECには、「現在のディレクトリをサブミットする」オプションがあります。

これを使用すると、バッチ ファイルで %1 を参照して、実行された EXE のパスを取得できます (実際に実行されている抽出された BAT のパスではありません)。

ここに画像の説明を入力

UI でそのオプションにカーソルを合わせると、「現在の作業ディレクトリを最後のパラメーターとして送信する」と表示されます。私の使用における「最後のパラメーター」は常に %1 でしたが、コードをテストして確認できます。

ここに画像の説明を入力

于 2012-10-14T08:00:50.603 に答える
0

f2ko のバッチから exe へのコンバーターで外部フォルダーを使用できます。サブルーチン用に別のフォルダーを用意すると、プロジェクト フォルダーを整理できます。mysubroutinesfolder\mysubroutine にある mysubroutine を呼び出すには、

...
pushd mysubroutinesfolder
call mysubroutine
popd
...

呼び出しはワンライナーで行うことができます:

call xqt mysubroutine

xqt.cmd は、呼び出しを行うプログラムです。

pushd mysubroutinesfolder
call %*
popd
exit /b

( %* は「すべての引数」を意味します)。このように、バッチ プログラムはバッチとして実行され、UNMODIFIED の場合、bat から exe へのコンバーターでコンパイルされ、完全にフォルダーに依存しない実行可能ファイルが作成されます。「一時ディレクトリ」を選択し、通常どおりカーソルで「すべてを選択」して mysubroutines フォルダーにすべてのサブルーチン/実行可能ファイルを含め、「コピー」を押します。xqt.cmd プログラムも必ず含めてください。mysubroutines フォルダーの「外側」に配置します。メインプログラムからアクセスできることを確認してください。x64 マシンで実行している場合は、忘れずに x64 を選択してください。そうしないと、実行可能ファイルが SYSTEM32 ファイルを見つけられません。f2k0 のバッチから exe へのコンバーターは、次の場所にあります。

http://www.f2ko.de/programs.php?pid=b2e

于 2015-03-25T23:01:45.770 に答える
0

一般に、これは良い考えではありません。まず、さまざまな cmd 機能でコンバーターのエラーと不安定性が発生しやすくなります。第二に、断固たるハッカーは、あなたがバッチで行っていることを解読することができます。私の提案は、もしあなたがあなたのバッチを覗き見する人をとても恐れているなら、

1) let only the people who are authorized to use your batch to use it
2) give them the correct permissions.

または、バッチをまったく使用しないでください

1) create a central interface such as a web interface, where all tasks to be done goes through that interface, like using an ATM machine where only buttons are allowed and all the available user options can be done by pushing buttons...etc..
2) authenticate your users through a central authentication system, eg Active Directory, or LDAP or a database.
于 2010-01-02T23:46:30.920 に答える
0

このバッチ スクリプト用の開発環境、Batch Compilerをお試しください。バッチ プログラムの開発に必要なすべてが含まれています。また、安定したスタンドアロン実行可能ファイル (Exe) にコンパイルします。

Friendly user interface.
Debugger, Check your code for syntax errors.
Powerful, versatile compiler.
Allows mouse input in batch files.
Use Windows Common Dialog Boxes.(BrowseFiles,BrowseFolders)
Draw graphics in batch files.
Reverse engineering proof encryption of source code.
Include Company name, Copyright info and Version info.
Make invisible(silent) executables.
Executables with administrator privileges.
Run & debug your script while editing.
Embed resources with executable.(music,images,files)
Advance Commands (BrowseFiles,LaunchSilent,MouseCMD)
Stand-alone executables.No dependencies needed.
Executables are woking on almost all windows operating systems.(98 to 10)

クイックダウンロード: http://bc.gotek.info/files/BatchCompiler159.zip

乾杯!

于 2015-08-02T13:14:54.370 に答える
-1

%CD%の代わりに使用し%~dp0ます。

編集:

B2EC は実際のコンバーターではありません。装備された .cmd ファイルの作成場所が選択されましたが%TEMP%、これは良い選択です。アプリケーションには、スクリプトの作業ディレクトリの 3 番目のオプションである .exe ファイル ディレクトリがありません。これを追加することについて著者にメールすることをお勧めします。

.exe と作成された .cmd のパスが異なると、情報が失われます。つまり、スクリプトに追加情報を提供しないと、.exe ディレクトリと現在のディレクトリを同時に知ることができません (環境変数を使用するか、最初/最後の引数として渡すなど)。スクリプトに)。このスクリプトはそれを処理する必要があり、このコンバーター用に調整された cmd スクリプトの作成を終了することになりますが、これは悪いことです。

%~dp0- スクリプトディレクトリ ( %TEMP%/.../) - 実質的に役に立たない

%cd%- 作業ディレクトリ (コンバータで設定) - 現在のところ、現在のディレクトリ (.exe の作業ディレクトリ) と一時ディレクトリ (実際には に等しいが%~dp0、末尾のバックスラッシュなし)の 2 つのオプションしかありません。

スクリプトのパスを変更するためにメモリ内のインスタンスにパッチを当てることで解決できると思いますがcmd.exe、それは B2EC 開発者の義務です。

補足: 通常の実行可能ファイルは、appriopriatelpApplicationNamelpCommandLineto CreateProcessfunction を指定することで、0 番目の引数を指定して簡単に実行できます。コマンドファイルは 経由cmd.exeで実行されるため、0 番目の引数をこのように設定することはできません。

于 2010-01-02T18:48:19.010 に答える
-1

%cd% は、現在のディレクトリを提供します。

if not exist "%CD%\file.txt" goto :nofile
于 2010-01-02T18:50:00.207 に答える