CMD: Bat to Exe Converter - répertoire Temp problème
je suis en utilisant "Bat to Exe Converter" pour convertir mes fichiers par lots pour le format exe.
Maintenant, je suis en cours d'exécution dans certains problèmes.
Chaque fois que je le convertir en quelque chose, et j'ai mis "Répertoire de Travail" à "Répertoire Courant", et je commence mon exe dans echo on
mode, c'est ce que je me retrouve avec pour vérifier s'il y a un fichier dans le répertoire de mon 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
Quelqu'un peut-il m'aider? Je ne veux pas de ça dans le répertoire temp, je veux qu'il soit dans le répertoire de mon exe.
Grâce.
Vous devez vous connecter pour publier un commentaire.
Sans avoir Bat to Exe modifiée par l'auteur, je pense que vous avez deux options:
Éliminer le besoin d'accéder à %~dp0
Peut-être vous pouvez fusionner
file.txt
avec l'option inclure des Bat to Exe dans le fichier EXE. Si oui,"file.txt"
sera automatiquement décompressés dans le répertoire courant lors de l'exécution de votre exe compilé, et vous pouvez accéder par%CD%\file.txt
.Obtenir
%~dp0
de l'extérieur et de le transmettre à l'exe en tant que paramètre de ligne de commande.Cela peut être fait par un simple démarreur
bat
fichier qui se trouve dans le même répertoire que votre compilé principal fichier de commandes. Ce script devaient contenir la ligneVotre exe compilé puis obtient son répertoire à partir de %1. Si vous ne pouvez pas emballer le tout dans un seul fichier exe, mais la partie principale, peut-être que c'est suffisant pour vous.
%cd% vous donnera le répertoire courant:
Bien, apparemment votre lot de exe converter simplement packs le fichier de commandes et il est extrait dans un répertoire temporaire avant l'exécution. Très simpliste, difficile de se tromper (comparé à comprendre réellement le fichier de commandes), mais il introduit des erreurs comme celle que vous décrivez.
Votre meilleur pari est probablement d'utiliser un autre lot to exe converter; certains d'entre eux sont en réalité un peu plus sophistiqué.
Utilisation
%CD%
au lieu de%~dp0
.EDIT:
B2EC n'est pas un vrai convertisseur. La création de l'emplacement de l'équipée .fichier cmd a été choisi pour être
%TEMP%
et c'est un bon choix. L'Application manque juste la 3ème option pour le répertoire de travail du script .exe fichier de répertoire. Je vous conseille de mail de l'auteur à propos de l'ajout d'un.Des chemins différents pour .exe et créé .cmd conduire à une perte d'information, c'est à dire que nous sommes incapables de connaître .exe annuaire et répertoire courant en même temps sans fournir des informations supplémentaires pour le script (par exemple, à l'aide de la variable d'environnement ou de le transmettre comme premier/dernier argument du script). Ce script aurait besoin de manipuler et nous permettrait de mettre fin à l'écriture cmd scripts adaptés pour ce convertisseur, ce qui est mauvais.
%~dp0
- répertoire du script (%TEMP%/.../
) - pratiquement inutile%cd%
- répertoire de travail (telles qu'énoncées dans le convertisseur) - actuellement il y a seulement 2 options: répertoire courant (répertoire de travail .exe) et le répertoire temporaire (en fait égal à%~dp0
, mais sans barre oblique inverse)Je pense qu'il peut être résolu par l'application de correctifs
cmd.exe
instance dans la mémoire de changer le chemin du script, mais c'est B2EC développeur du devoir.Note de côté: Normal les fichiers exécutables peuvent être facilement exécutées avec des 0e argument en fournissant appriopriate
lpApplicationName
etlpCommandLine
àCreateProcess
fonction. Les fichiers de commandes sont exécutées viacmd.exe
, donc 0e argument ne peut pas être définie de cette manière.%TEMP%
répertoire et c'est pourquoi%~X0
ne fonctionne pas comme vous le souhaitez.Généralement, ce n'est pas une bonne idée. tout d'abord, ses sujettes à des erreurs et de l'instabilité du convertisseur sur différents cmd fonctionnalités. d'autre part, un déterminé hacker peut encore décoder ce que vous faites avec le lot. Ma suggestion, si vous êtes tellement peur de personnes à la recherche dans le lot,
OU, ne pas utiliser le traitement par lots à tous les
C'est un 2.5 yr vieux sujet, mais il n'y est une réponse à ce que je suis de poster pour quelqu'un d'autre qui se passe dans une recherche.
B2EC écrit par Fatih Kodak, a une option "Soumettre un répertoire courant".
Lorsque cela est utilisé, vous pouvez référencer %1 dans votre fichier de commandes pour obtenir le chemin d'accès de l'exécutable qui a été exécuté (au lieu du chemin de l'extrait chauve-souris qui est vraiment en cours d'exécution).
Planant au-dessus de cette option dans l'INTERFACE utilisateur affiche "Soumettre le répertoire de travail courant comme le dernier paramètre". Le "dernier paramètre" dans mon utilisation a toujours été %1, mais vous pouvez tester votre code pour être sûr.
La dernière version 2.1.4 au moment de l'écriture, de Bat to Exe par Fatih Kodak crée une Variable d'Environnement lors de l'exécution, qui peut être substitué à la place de %~dp0 de référence de l'Exe du chemin. Par conséquent, vous pouvez simplement remplacer l' %-dp0 avec %b2eprogrampathname% original dans le fichier de commandes.
Vous pouvez utiliser des dossiers avec f2ko du lot à exe-converter. Avoir
un dossier séparé pour les sous-programmes peuvent vaincus en place d'un dossier de projet.
Pour appeler mysubroutine qui est situé dans mysubroutinesfolder\mysubroutine,
L'appel peut être fait en une seule ligne:
où xqt.cmd est un programme qui fait appel à vous:
(l' %* signifie "tous les arguments").
De cette façon, votre lot les programmes d'exécution du lot, et non ils
compiler avec le bat to exe converter, en créant un dossier exécutable indépendant. Sélectionnez "répertoire temporaire",
et inclure tous les sous-programmes/fichiers exécutables dans votre dossier mysubroutines
par "sélectionner tout" à l'aide de votre curseur, comme d'habitude, puis cliquez sur "copier".
Assurez-vous d'inclure les xqt.cmd programme trop; le place de "l'extérieur" de votre mysubroutines dossier. Assurez-vous que est accessible par votre programme principal. N'oubliez pas de sélectionner x64 si vous
sont marche sur une machine x64, ou l'exécutable ne sera pas trouver SYSTEM32
les fichiers. Vous pouvez trouver f2k0 du lot to exe converter à l':
http://www.f2ko.de/programs.php?pid=b2e
Essayer cet environnement de développement pour des scripts batch, Lot De Compilateur . Il a tout ce dont vous avez besoin pour développer un programme de commandes.Et compiler stable autonome exécutable (Exe).
Téléchargement rapide : http://bc.gotek.info/files/BatchCompiler159.zip
Cheers!