Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch - Aktueller Ordner als Variable speichern

Frage Entwicklung Batch & Shell

Mitglied: copro

copro (Level 1) - Jetzt verbinden

07.09.2005, aktualisiert 09.09.2005, 92732 Aufrufe, 10 Kommentare

Hallo zusammen

Kennt jemand eine einfach möglichkeit in einem Batch den aktuellen Ordner in dem man sich befindet in eine Variable zu speichern?

Mit freundlichen Grüßen
Copro
Mitglied: superboh
08.09.2005 um 06:28 Uhr
Hallo Copro,

versuch mal folgendes:

----8<---- schnipp ----8<----

cd > %temp%\tempfile.txt
set /p Verz=<%temp%\tempfile.txt
del %temp%\tempfile.txt

----8<---- schnipp ----8<----

Mag sein dass es auch ohne den Umweg über die Textdatei geht ... (hallo @Biber ?)

Gruss,
Thomas
Bitte warten ..
Mitglied: 16640
08.09.2005 um 07:40 Uhr
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.
Bitte warten ..
Mitglied: Biber
08.09.2005 um 11:33 Uhr
@superboh
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
Bitte warten ..
Mitglied: copro
08.09.2005 um 15:12 Uhr
Ich bin ein schlechter Poster sorry =)

Vorab ich benutze Win XP
Es geht mir mal wieder um mein Desktop Script...
Da es ja sein kann das Mp3 z.B. so abgelegt sind:

Ordner
Unterordner
Mp3

ich habe mir ein Batch erstellt der alle Ordner und Unterordner in eine TXT haut...
Danach wird mit FOR jede Zeile abgearbeitet und geprüft ob sich eine MP3 Datei darin befindet...
Fals eine existiert wird der ganze Ordner an einen anderen Ort kopiert....
Nun müsste ich das Verzeichniss in einer Variable haben um die Mp3 auch wieder in einen gleichnamigen Ordner kopieren zu können....

Was wichtig ist ich brauche NUR den Ordnername nicht aber den Pfad...

----------------------------------Code-----------------------------------

dir /b /s "C:\Dokumente und Einstellungen\DruGChiLD\desktop\" > c:\clrdesk\desktop_all.txt

find /v "." c:\clrdesk\desktop_all.txt > c:\clrdesk\desktop_folders.txt

for /F "tokens=*" %a in (c:\clrdesk\desktop_folders.txt) do dir /b "%a\*.mp3" & if exist "%a\*.mp3" xcopy "%a\*.*" "c:\test\VARIABLE\*.*"

----------------------------------Code-----------------------------------
Ich weiss nicht ob es für mein Prob ne einfachere Lösung gibt, wenn jemand ne Idee hat nur zu....
Bitte warten ..
Mitglied: Biber
08.09.2005 um 15:57 Uhr
@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...
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*)
Bitte warten ..
Mitglied: copro
08.09.2005 um 18:59 Uhr
Ja das ist mein eigentlicher Nick, kommt in Foren einfach nicht so gut ;)

Das For /R muss ich wohl übersehen haben ;)
Erleichtert einiges aber löst nicht mein Prob. , dass alle Mp3 auf meinem Desktop
in einen Ordner kommen...

Stell dir mal vor ich lade von rapchek.de 4 Alben runter... Bei herunterahren werden die alle in einen Ordner geschoben....

Am nächsten Tag hab ich kein Plan mehr welche MP3 zu welchem album gehört...

Und deshalb muss ich es noch irgentwie hinbekommen, dass Quellordnername = Zielordnername ist...

Danke dir auf jeden fall schon mal für deine Hilfe

Mit freundlichen Grüßen
Batcher
Bitte warten ..
Mitglied: Biber
08.09.2005 um 19:40 Uhr
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:
@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
<font class=code>-------- 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</font>Diese drei Batchzeilen meinte ich vorhin.

HTH
Frank / der bIbeR aus Bremen
[Edit] Tippfehlerberichtigung (s.u.) [/Edit]
Bitte warten ..
Mitglied: copro
08.09.2005 um 23:11 Uhr
Ok jetzt hab ich es verstanden =)
Besser aufzeigen konnte man es ja auch nicht...

Muss ganz ehrlich sagen mit diesen %~pnxi Syntaxen habe ich bisher noch nicht gearbeitet =)
Ich habe verstanden was der Patch macht und wie er abläuft nur wenn ich ihn übernehemen will kommt die Meldung

Die folgende Verwendung des Pfadoperators zur Ersetzung eines Batchparameters ist ungültig: %~pnxI

Wie gesagt ich peil das noch nicht ganz mit der Syntax...

Könntest du mir noch sagen was daran falsch ist?
Dann steht der Teil ja schon =)

Kann mich nur nochmals herzlich bedanken =)
Bitte warten ..
Mitglied: copro
09.09.2005 um 00:30 Uhr
@Biber Ober Hammer Thx A lot man =)

so passt das ganze:

@echo on & subst s: "C:\Dokumente und Einstellungen\DruGChiLD\desktop"
md c:\MusikOrdner\
for /r s: %%i in (*.mp3) do (xcopy /s /y /i "%%~i" "c:\MusikOrdner%%~pnxi.*")
subst s: /d
Bitte warten ..
Mitglied: Biber
09.09.2005 um 10:28 Uhr
@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\"
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...