Batch - Aktueller Ordner als Variable speichern
Hallo zusammen
Kennt jemand eine einfach möglichkeit in einem Batch den aktuellen Ordner in dem man sich befindet in eine Variable zu speichern?
MfG
Copro
Kennt jemand eine einfach möglichkeit in einem Batch den aktuellen Ordner in dem man sich befindet in eine Variable zu speichern?
MfG
Copro
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 15681
Url: https://administrator.de/contentid/15681
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo Copro,
versuch mal folgendes:
Mag sein dass es auch ohne den Umweg über die Textdatei geht ... (hallo @Biber ?)
Gruss,
Thomas
versuch mal folgendes:
cd > %temp%\tempfile.txt
set /p Verz=<%temp%\tempfile.txt
del %temp%\tempfile.txt
Mag sein dass es auch ohne den Umweg über die Textdatei geht ... (hallo @Biber ?)
Gruss,
Thomas
Du hast leider nicht geschrieben, unter welcher Betriebssystemversion. Hier ein Auszug aus der Hilfe zum SET-Befehl unter W2KPro:
Wenn die Befehlserweiterungen aktiviert sind, gibt es mehrere dynamische
Umgebungsvariablen, die zwar erweiterungsfähig sind, aber nicht in der Liste
von Variablen auftauchen, die mit SET angezeigt werden. Diese Variablenwerte
werden bei jeder Werterweiterung der Variable dynamisch berechnet. Falls eine
Variable mit einem dieser Namen definiert wird, dann überschreibt diese
Definition die unten stehende dynamische Definition:
%CD% - expandiert zum aktuellen Verzeichnisnamen.
Beispielweise funktioniert hier ein 'echo %CD%' auf der Kommandozeile problemlos.
Wenn die Befehlserweiterungen aktiviert sind, gibt es mehrere dynamische
Umgebungsvariablen, die zwar erweiterungsfähig sind, aber nicht in der Liste
von Variablen auftauchen, die mit SET angezeigt werden. Diese Variablenwerte
werden bei jeder Werterweiterung der Variable dynamisch berechnet. Falls eine
Variable mit einem dieser Namen definiert wird, dann überschreibt diese
Definition die unten stehende dynamische Definition:
%CD% - expandiert zum aktuellen Verzeichnisnamen.
Beispielweise funktioniert hier ein 'echo %CD%' auf der Kommandozeile problemlos.
@superboh
Jepp, ginge natürlich:
Aber: auch für den "FOR /F" Befehl ist Win2k/WinXP nötig, und da gibt es die von dba beschriebene Umgebungsvariable %CD%.
Für universellen Einsatz (Win9x, DOS x.xx..) ist Dein Weg der allgemein verwendbare.
@copro:
Ich weiß nicht, wofür Du das Verzeichnis in einer Variablen brauchst, aber für die normal denkbaren Anwendungsfälle (aktuelles Verzeichnis merken, Verzeichnis wechseln, rumalbern, wieder ins ursprüngliche Verzeichnis zurück) gibt es jetzt die PUSHD / POPD-Mimik. Die macht vieles einfacher. Schau mal in die Hilfe.
Grüße
Frank / der Biber aus Bremen
Jepp, ginge natürlich:
for /f %i in ('cd') do set verz=%i
Aber: auch für den "FOR /F" Befehl ist Win2k/WinXP nötig, und da gibt es die von dba beschriebene Umgebungsvariable %CD%.
Für universellen Einsatz (Win9x, DOS x.xx..) ist Dein Weg der allgemein verwendbare.
@copro:
Ich weiß nicht, wofür Du das Verzeichnis in einer Variablen brauchst, aber für die normal denkbaren Anwendungsfälle (aktuelles Verzeichnis merken, Verzeichnis wechseln, rumalbern, wieder ins ursprüngliche Verzeichnis zurück) gibt es jetzt die PUSHD / POPD-Mimik. Die macht vieles einfacher. Schau mal in die Hilfe.
Grüße
Frank / der Biber aus Bremen
@copro
*gg "DruGChiLD" ist gut...gefällt mir
ich denke schon, dass es etwas einfacher ginge (Oneliner sind ja immer einfach *sfg), aber nicht, dass Du da viel Hilfe brauchst.
Schau dir mal den "FOR /R...IN....DO"-Befehl an. Der bringt Dich da Lichtjahre voran.
So sinngemäß sollte es gehen...
(total ungetestet, aber die Richtung stimmt)
Hab grade keine Zeit, kann aber gerne nochmal helfen, wenn Du -wider Erwarten- es nicht allein hinbekommst. (Die Skizze oben nicht gleich so ausprobieren, wer weiß was dann passiert!! *feix*)
*gg "DruGChiLD" ist gut...gefällt mir
ich denke schon, dass es etwas einfacher ginge (Oneliner sind ja immer einfach *sfg), aber nicht, dass Du da viel Hilfe brauchst.
Schau dir mal den "FOR /R...IN....DO"-Befehl an. Der bringt Dich da Lichtjahre voran.
So sinngemäß sollte es gehen...
FOR /R "C:\Dokumente und Einstellungen\DruGChiLD\desktop" %%a IN (*.mp3) DO xcopy /S /i Y ~pnx%%a c:\test
(total ungetestet, aber die Richtung stimmt)
Hab grade keine Zeit, kann aber gerne nochmal helfen, wenn Du -wider Erwarten- es nicht allein hinbekommst. (Die Skizze oben nicht gleich so ausprobieren, wer weiß was dann passiert!! *feix*)
Nö, nö, copro,
die *.mp3s sollen ja auch nicht in einen Ordner... das hab ich auch schon verstanden.
Der FOR /R - Befehl wackelt ja die gesamte Ordnerstruktur durch, "steht" also sozusagen bei jeder Ausführung der "DO was-auch-immer"-Anweisung in einem anderen Verzeichnis.
damit würde ich es so machen (als Batch)
auf den Desktop leg ich ein SUBST.... ich nenn es Laufwerk s:
:: ergibt bei mir
darauf mach ich ein:
Wenn es das ist, was Du willst, lösche halt das ECHO und die kopierten *.mp3s
Diese drei Batchzeilen meinte ich vorhin.
HTH
Frank / der bIbeR aus Bremen
[Edit] Tippfehlerberichtigung (s.u.) [/Edit]
die *.mp3s sollen ja auch nicht in einen Ordner... das hab ich auch schon verstanden.
Der FOR /R - Befehl wackelt ja die gesamte Ordnerstruktur durch, "steht" also sozusagen bei jeder Ausführung der "DO was-auch-immer"-Anweisung in einem anderen Verzeichnis.
damit würde ich es so machen (als Batch)
auf den Desktop leg ich ein SUBST.... ich nenn es Laufwerk s:
@echo off & subst s: "%HOMEPATH%%HOMEDRIVE%\Desktop"
:: oder... & subst s: "%USERPROFILE%\Desktop" ..oder ...subst s: "C:\Dokumente....\Desktop"
:: ergibt bei mir
>dir /s /b s:\*.mp3
s:\eins\zwei\drei\album9.mp3
s:\eins\zwei\vier\album7.mp3
s:\eins\zwei\vier\album9.mp3
darauf mach ich ein:
for /r s: %i in (*.mp3) do @echo xcopy /s /y /i %~i c:\MusikOrdner%~pnxi
xcopy /s /y /i S:\eins\zwei\drei\album9.mp3 c:\MusikOrdner\eins\zwei\drei\album9.mp3
xcopy /s /y /i S:\eins\zwei\vier\album7.mp3 c:\MusikOrdner\eins\zwei\vier\album7.mp3
xcopy /s /y /i S:\eins\zwei\vier\album9.mp3 c:\MusikOrdner\eins\zwei\vier\album9.mp3
Wenn es das ist, was Du willst, lösche halt das ECHO und die kopierten *.mp3s
-------- snipp -- DruGChiLDsMP3CopY.bAt
@echo off & subst s: "%USERPROFILE%\Desktop"
for /r s: %%i in (*.mp3) do (xcopy /s /y /i %%~i c:\MusikOrdner%%~pnxi) && del %%~i
subst s: /d
------- snapp DruGChiLDsMP3CopY.bAt
Diese drei Batchzeilen meinte ich vorhin.
HTH
Frank / der bIbeR aus Bremen
[Edit] Tippfehlerberichtigung (s.u.) [/Edit]
@copro
hab ich doch gleich gesagt, dass Du das schon allein hinbekommst *gg
Trotzdem sorry für das vergessene "%" - wollte ja nur nur testen, ob Du mitdenkst *feix*
Den Tippfehler korrigiere ich oben in meinem Post (falls irgendeiner diesen Thread nicht bis zu Ende liest).
Letzte Anmerkung:
Du löschst die *.mp3's nicht nach dem Kopieren? Why not?
Dann würde ich wenigstens den xCopy erweitern um Schalter "/D", damit er nur jeweils die neuen *.mp3s kopiert und nicht jeden Tag alle.
Schönes Wochenende
Biber
P.S. Die Zeile kannst Du wieder löschen: "md c:\MusikOrdner\" oder ändern in "if not exist c:\MusikOrdner md c:\MusikOrdner\"
hab ich doch gleich gesagt, dass Du das schon allein hinbekommst *gg
Trotzdem sorry für das vergessene "%" - wollte ja nur nur testen, ob Du mitdenkst *feix*
Den Tippfehler korrigiere ich oben in meinem Post (falls irgendeiner diesen Thread nicht bis zu Ende liest).
Letzte Anmerkung:
Du löschst die *.mp3's nicht nach dem Kopieren? Why not?
Dann würde ich wenigstens den xCopy erweitern um Schalter "/D", damit er nur jeweils die neuen *.mp3s kopiert und nicht jeden Tag alle.
Schönes Wochenende
Biber
P.S. Die Zeile kannst Du wieder löschen: "md c:\MusikOrdner\" oder ändern in "if not exist c:\MusikOrdner md c:\MusikOrdner\"