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

Batch-Programmierung Ergebnis einer FOR-Schleife übergeben

Frage Entwicklung Batch & Shell

Mitglied: Alex81m

Alex81m (Level 1) - Jetzt verbinden

24.06.2011, aktualisiert 18.10.2012, 5382 Aufrufe, 3 Kommentare

Batch-Programmierung Ergebnis einer FOR-Schleife übergeben

Hallo Zusammen,

hänge gerade an einem Problem bei welchem ich Hilfe benötige.
Ich möchte ein Batch-Skript bauen, welches mir in allen Verzeichnissen und Unterverzeichnissen nach MP3 Dateien sucht und die Ergebnisse dann weiterverarbeiten. Nun steh ich vor der Herausforderung die For-Schleifen-Ergebnisse auszulesen.
Aktuell habe ich folgenden CODE
01.
for /f "delims=" %%i IN ('dir /b /s *.mp3') do (  
02.
SET myString="%%i" 
03.
echo Ergebnis Forschleife: %%i 
04.
echo Ergebnis Variable: %myString% 
05.
REM ToDo Splitstring, Move 
06.
)
Nun bekomme ich jedoch folgende Ausgaben:
01.
c:\temp>Script.cmd 
02.
Ergebnis Forschleife: c:\temp\Ordner 1\Unterordner 1\1.mp3 
03.
Ergebnis Variable: "c:\temp\Ordner 1\Unterordner 3\3.mp3" 
04.
Ergebnis Forschleife: c:\temp\Ordner 1\Unterordner 2\Unterordner 2.1\2.mp3 
05.
Ergebnis Variable: "c:\temp\Ordner 1\Unterordner 3\3.mp3" 
06.
Ergebnis Forschleife: c:\temp\Ordner 1\Unterordner 3\3.mp3 
07.
Ergebnis Variable: "c:\temp\Ordner 1\Unterordner 3\3.mp3"
Mir ist absolut schleierhaft warum ich immer nur den letzten Wert der For-Schleife in der Variablen habe.
Bin für Ideen und Tipps offen.
Danke
Mitglied: bastla
24.06.2011, aktualisiert 18.10.2012
Hallo Alex81m und willkommen im Forum!
Mir ist absolut schleierhaft warum ich immer nur den letzten Wert der For-Schleife in der Variablen habe.
Wird es nicht mehr sein, wenn Du Dich etwas mit "delayedExpansion" beschäftigst - Du findest einiges zu diesem Stichwort hier im Forum. Schau Dir auch Friemlers Tutorial zur FOR-Schleife an.
Abgesehen davon ist es uU gar nicht erforderlich, die gefundenen mp3-Dateipfade in eine Variable zu übernehmen - was hast Du denn konkret damit vor?

Grüße
bastla
Bitte warten ..
Mitglied: Alex81m
24.06.2011 um 01:30 Uhr
Hi Bastla,

danke für den Tipp werde mir mal "delayedExpansion" anschauen .
Was ich damit vor habe? Ich möchte die Dateien aus dem Quellverzeichnis in ein neues Verzeichnis verschieben und genau die Ordnerstruktur der Quelle auf dem Ziel abbilden.
Beispiel Quelle: C:\Dir1\Dir2\Dir3\Dir4\1.mp3 nach Ziel D:\Dir1\Dir2\Dir3\Dir4\1.mp3
Mein Ansatz wäre nun ein Stringsplit um den Dateinamen zu erhalten und das Ziel zu replacen.

Grüße Alex81m
Bitte warten ..
Mitglied: bastla
24.06.2011 um 01:46 Uhr
Hallo Alex81m!

Wenn es tatsächlich nur darum ginge, "C:" durch "D:" zu ersetzen, sollte ja
01.
for /f "delims=" %%i IN ('dir /b /s C:\temp\*.mp3') do ( 
02.
    echo xcopy /dy "%%i" "D:%%~pnxi*" 
03.
    REM xcopy /dy "%%i" "D:%%~pnxi*" && del "%%i" 
04.
)
genügen ...

Zum Testen wird nur der Kopierbefehl angezeigt - wenn es vernünftig aussieht, kannst Du die Zeile 2 und das REM vor der Zeile 3 entfernen; dann wird zuerst kopiert ("xcopy" kann nämlich, anders als "move", den Zielpfad bei Bedarf erstellen) und, wenn kein Fehler aufgetaucht ist (deshalb die Verknüpfung mit "&&") danach die Quelldatei gelöscht.

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(3)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Batch & Shell
gelöst Verlinkung erstellen Batch Datei mit for Schleife (2)

Frage von rusdav zum Thema Batch & Shell ...

Batch & Shell
Verschachtelte For Schleife für Batch Neuling (3)

Frage von yperiu zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Problem bei einer For Schleife (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
Batch: Variable Expansion in einer FOR-Schleife (9)

Frage von .Sessl zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
Kaufberatung für mind. 8 verschiedene HighEnd-Mainboards (24)

Frage von yperiu zum Thema CPU, RAM, Mainboards ...

Netzwerke
Abisolierwerkzeug (11)

Frage von SarekHL zum Thema Netzwerke ...

Hyper-V
Langsames Netzwerk i210 LAN Karte (11)

Frage von Akcent zum Thema Hyper-V ...

Windows Server
Server 2016 - Kuriositäten (8)

Frage von certifiedit.net zum Thema Windows Server ...