datobsn
Goto Top

Namen einer Datei als Variable beim Starten einer BatchDatei übergeben

Hi Community,
und zwar beschäftige ich mich zur Zeit mit der Sprache C++.
Da ich ja immer die Quellcode Datei per cmd mit lauter Eingaben kompilieren und linken kann, möchte ich dies Automatisieren.
Und zwar meine Idee wäre folgendes:

Ich möchte gerne die .cpp Datei mit "Drag&Drop" auf die Batchdatei ziehen, um so den Dateinamen gleich irgendwie als Variable mitzugeben.
Ich denke, der Quellcode siehe dann irgendwie so aus:
@echo off
cd
set /p progname=Programmname: 
::---Übernahme der QuellcodeDatei--::
set quellcode=????

:: kompelieren & linken ::
gcc -o %progname% %quellcode%
pause

Ich bin nun schon die ganze Zeit am Rätseln, wie ich den Namen dann mit einspeisen kann, aber mir fällt nichts ein :/
Vielleicht fällt ja euch etwas ein face-wink

Danke schon mal

MFG
Tobsn

Content-ID: 358219

Url: https://administrator.de/contentid/358219

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

rubberman
rubberman 14.12.2017 um 18:54:49 Uhr
Goto Top
Eine per drag/drop auf das Script gezogene Datei ist dort als Parameter %1 abgreifbar.
if "%~1"=="" exit /b  
set quellcode=%1

Steffen
DaTobsn
DaTobsn 15.12.2017 um 14:26:00 Uhr
Goto Top
Hi Steffen,
Danke für die Antwort!
Es funktioniert tatsächhlich, nur noch eine Anmerkung:
Er übernimmt nicht nur den Namen mit Endung, auch das gesamte Verzeichnis.
Kann man das irgendwie "abtrennen"?
Ich brauche nur den Namen mit Endung
(P.S.: Sowohl Name als auch Verzeichnis ändert sich häufig)

MFG
Tobsn
rubberman
Lösung rubberman 15.12.2017 um 16:41:21 Uhr
Goto Top
Das macht nicht wirklich Sinn, denn wenn du eine Datei von einem anderen Verzeichnis auf die Datei ziehst, dann hast du natürlich auch dann den vollen Pfad mit dem anderen Verzeichnis.

Aber um deine Frage zu beantworten, in Parametervariablen kannst du (genau wie in FOR Variablen) Modifikatoren verwenden. Führe CALL /?aus, um ein Beschreibung aller dieser Modifikatoren zu bekommen.
echo %~nx1
Steffen
DaTobsn
DaTobsn 15.12.2017 um 17:58:11 Uhr
Goto Top
Okay, ja, des war etwas unglücklich formuliert...
gemeint ist, dass die BatchDatei mal in dem Verzeichnis, mal in dem ist.

Aber danke, die Lösung funktioniert nun :D
rubberman
rubberman 15.12.2017 um 18:27:35 Uhr
Goto Top
Zitat von @DaTobsn:
gemeint ist, dass die BatchDatei mal in dem Verzeichnis, mal in dem ist.

Das macht doch keinen Unterschied face-plain Naja, egal...