Top-Themen

Aktuelle Themen (A bis Z)

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

Name eines Verzeichnisses per batch finden und damit weiterarbeiten?

Mitglied: Jediman

Jediman (Level 1) - Jetzt verbinden

21.08.2005, aktualisiert 23.08.2005, 9288 Aufrufe, 6 Kommentare

Name eines Verzeichnisses per batch finden und damit weiterarbeiten?

Hallo

ich benötige für ein paar automatisierte Kopieraktionen eine kleine .bat Datei die den Namen eines Verzeichnisses rausfindet bzw von mehreren Verzeichnissen, sozusagen nach folgendem Muster:

1. schau im Verzeichnis1 nach welche Verzeichnisse es dort gibt und wie sie heissen.
2. kopieren dann eine Datei x.txt in JEDES der oben gefundenen Verzeichnisse rein

Im Prinzip also ein Schleife die nachschaut welche Verzeichnisse existieren und bei einem gefundenen Verzeichnis dann eine Datei jeweils in das gefundene Verzeichnis schreibt, bis alle Verzeichnisse abgearbeitet wurden die im Verzeichnis1 drinne sind.

Hoffe ich hab es nicht zu kompliziert ausgedrückt *g*
... und schonmal Danke für alle Antworten
Mitglied: Biber
22.08.2005 um 02:42 Uhr
Nimm diesen Oneliner:
snipp CopyFileToAllDirsBelowDir.bat----------
<font size=-2>@if "%*"=="" (@Echo Syntax: %0 File ToDir) ELSE (@for /r "%~2" %%i in (.) do @If Not "%~1"=="%%~i" @copy "%~1" "%%~i" >nul)</font>
snipp CopyFileToAllDirsBelowDir.bat-------
HTH Frank /der Biber aus Bremen
Bitte warten ..
Mitglied: Biber
22.08.2005 um 07:20 Uhr
Moin, Jediman,
sorry, wenn ich im obigen Kommentar so kurz angebunden war - ich hatte die Antwort schon einmal eingetippt und war dabei abgestürzt.. genauer gesagt mein Brauser. Egal.

Also jetzt noch kurz ein paar Nachträge:
- ein CopyFileToAllDirsBelowDir.bat x.txt d:\temp kopiert Dir die Datei x.txt in alle Unterverzeichnisse unterhalb von d:\temp.
- Nicht in D:\temp selbst. Wenn es da auch hin soll: @If Not "%~1"=="%%~i" löschen.
- Dafür wird x.txt auch in alle Unter-Unterverzeichnisse kopiert. Wenn es nur auf die erste Ebene unterhalb d:\temp soll, noch mal posten. Dann machen wir einen Zweizeiler draus *gg
- WARNUNG: das Bätchelchen macht auch ohne Rückfrage ein CopyFileToAllDirsBelowDir.bat c:\*.* d:\temp und müllt Dir zu, was auch immer Du schriftlich verlangst.

Und eine Frage noch:
Ich verwende immer relativ viel Energie und Gehirnschmalz darauf, Dateiduplikate zu vermeiden statt zu erzeugen ... Was um alles in der Welt treibt Dich zu dieser Anforderung??? Nur mal interessehalber...
Bitte warten ..
Mitglied: Jediman
22.08.2005 um 08:24 Uhr
Erst mal vielen Dank Biber für deine Antwort

Ich benötige das ganze für eine kleine Installations-Routine, auf das zu "manipulierende" Ziel hab ich leider keinen Einfluss, daher das etwas komplizierte.

Mein Problem genau ist folgendes:

Ich befinde mich im Root-Verteichnis eines Spiels

W:\Spiel

nun "möchte" ich per .bat 2 Dateien für ein Layout was sich öffters ändert in Unterverzeichnisse kopieren, deren Name ich allerdings nicht kenne und das ist eben mein Problem. Bisher habe ich es so gelöst das der Nutzer seinen Accountnamen und dann anschliessend jeweils seine bis zu 20 Charnamen per Hand eingeben musste, was natürlich bei 20 Spieler-Chars doch etwas umständlich ist. Daher suche ich alternativ eine automatische Erkennung der Verzeichnisse

genau sollte es so sein:

ich bin im Verzeichnis W:\Spiel

gehe nun ins Verzeichnis W:\Spiel\Account

[START Schleife 1]
- Abfrage: Schaue nach welche Accounts/Verzeichnisse existieren (eventuell mit /dir)

- Abfrage: Wie heisst das ERSTE gefundene Verzechnis? Weise den erfragten Namen einer Variablen zu zB %AccName%

- Gehe nun in das ERSTE erfragte Verzeichnis (dessen Name ich ja nicht kenne) cd %AccName%

[START Schleife 2]
- Schaue nun nach in dem Verzeichnis %AccName% ob sich dort Charnamen=Verzeichnisse befinden und weise (eventuell mit /dir erfragen?) diesen gefundenen Charnamen/Verzeichnisse die Variable %Char% zu

kopiere alle im Verzeichnis W:\Spiel\template\*.* befindlichen DATEIEN in das erfragte Verzeichnis W:\Spiel\Account\%AccName%\%Char%\*.*

Arbeite das ganze solange ab, bis keine CHARNAMEN=Verzeichnisse mehr gefunden werden
Wenn welche gefunden werden gehen nach Anfang Schleife 2
Werden keine weiteren CHARNAMEN=Verzeichnisse gefunden dann schau nach ob es noch einen weiteren Account gibt. Schaue nach ob noch weitere Accounts (siehe Schleife 1) existieren, erfrage dort auch die CHARNAMEN=Verzeichnisse und kopieren dann auch jeweils in jedes gefundenen Charnamen=Verzeichniss

[ENDE Schleife 2]

Schaue nach ob noch weitere Accounts (siehe Schleife 1) existieren, erfrage dort auch die Charnamen und kopieren dann auch jeweils in jedes gefundenen Charnamen=Verzeichniss
[ENDE Schleife 1]

Ordner Struktur wäre zB

Quelle:
W:\Spiel\template\*.*

Ziel:
W:\Spiel\Account\Account1\Char1\
W:\Spiel\Account\Account1\Char2\
W:\Spiel\Account\Account1\Char3\
W:\Spiel\Account\Account1\Char4\
W:\Spiel\Account\Account1\Char5\
W:\Spiel\Account\Account1\Char6\

W:\Spiel\Account\Account2\Char1\
W:\Spiel\Account\Account2\Char2\
W:\Spiel\Account\Account2\Char3\

.... hoffe das versteht einer *g*
Bitte warten ..
Mitglied: Biber
22.08.2005 um 11:21 Uhr
aaahhh, Jediman,
jetzt versteh ich...(glaub ich *gg)... Du brauchst DEN Oneliner:
CopyTemplates.bat
@for /r W:\Spiel\Account %%a in (.\Account*) do @for /r %%~dpa %%i in (.) do copy W:\Spiel\template\*.* "%%~i" >nul
----------snapp CopyTemplates.bat

das mit Deinen vielen Schleifen und Variablen hab ich nicht verstanden, das würde bestimmt auch Stunden dauern, so zwei um sich kreisende Schleifen zu programmieren...

probier aber lieber erst den "entschärften" TestCopyTemplates.bat aus
---snipp----------
@for /r W:\Spiel\Account %%a in (.\Account*) do @for /r %%~dpa %%i in (.) do @ECHO copy W:\Spiel\template\*.* "%%~i" ^>NUL
---snapp

So würde es zumindest (denke ich) fünktionieren, wenn unterhalb W:\Spiel\Account\Account?\ nur Verzeichnisse ("CHARy" in Deinem Beispiel) und keine Dateien wären.
Wohler wäre mir (und Dir sicher auch) wenn sich das "(.)" in der 2. FOR-Schleife eingegrenzt werden könnte durch eine bestimmte Dateimaskenvorgabe. Aber die "CHAR.."-Verzeichnisnamen sind frei wählbar für deine Anwender??
Dann musst Du VOR das Copy noch diese Prüfung setzen: If Exist "%%~i\." , damit nur in Verzeichnisse kopiert wird und nicht auf Dateien in der Ebene W:\Spiel\Account\Account?.

Sind bestimmt noch Denkfehler drin, aber in der Theorie klappt es prima.
Bitte warten ..
Mitglied: Biber
23.08.2005 um 10:13 Uhr
Moin, Jediman,

wir haben uns das Leben unnötig schwer gemacht, geht noch einfacher.
Zumindest bei Deiner speziellen Verzeichnis-Struktur.
Ich habe es mal bei mir nachgebildet.

Mein "D:\temp" entspricht Deinem "W:\Spiel"... Egal - ich halte es variabel:
>Set SPIELEROOT=D:\temp

Ausgangssituation: Unterhalb %SPIELEROOT%\accounts existieren ein paar Accounts (acc_birgit, admin. gast. user19),
die alle ein paar "Spielerkonten" angelegt haben. Acc_birgit zum Beispiel "biggi01" und "biggi02"..
Außerdem existiert ebenfalls unterhalb %SPIELEROOT% ein template-Unterzeichnis mit 2 *.txt-Dateien.
<= 9:40:46 D:\temp=>
>dir /s /b %SPIELEROOT%\accounts
D:\temp\accounts\acc_birgit
D:\temp\accounts\admin
D:\temp\accounts\gast
D:\temp\accounts\user19
D:\temp\accounts\acc_birgit\biggi01
D:\temp\accounts\acc_birgit\biggi02
D:\temp\accounts\acc_birgit\gast
D:\temp\accounts\admin\DI
D:\temp\accounts\admin\MI
D:\temp\accounts\admin\MO
D:\temp\accounts\gast\player3
D:\temp\accounts\gast\player56
D:\temp\accounts\user19\megashooter
D:\temp\accounts\user19\supershooter
D:\temp\accounts\user19\supershooter\serverlog.txt

>dir /s /b %SPIELEROOT%\template
D:\temp\template\setipconfig2IP.txt
D:\temp\template\vbsskripte.txt
(Die beiden *.txt sollen kopiert werden wie bei Dir beschrieben.

Lösung
Dann reicht doch logischerweise diese Zeile
"in alle Unterverzeichnissen, die ZWEI Ebenen tiefer hängen als die Ebene template kopiere...."

>@for /r %SPIELEROOT%\Accounts %a in (.) do @if exist %a.\..\..\template copy %a.\..\..\template\*.txt %a

Ergebnis
<=10:01:15 D:\temp=>
>dir /s /b %SPIELEROOT%\accounts\*.txt
D:\temp\accounts\acc_birgit\biggi01\setipconfig2IP.txt
D:\temp\accounts\acc_birgit\biggi01\vbsskripte.txt
D:\temp\accounts\acc_birgit\biggi02\setipconfig2IP.txt
D:\temp\accounts\acc_birgit\biggi02\vbsskripte.txt
D:\temp\accounts\acc_birgit\gast\setipconfig2IP.txt
D:\temp\accounts\acc_birgit\gast\vbsskripte.txt
D:\temp\accounts\admin\DI\setipconfig2IP.txt
D:\temp\accounts\admin\DI\vbsskripte.txt
D:\temp\accounts\admin\MI\setipconfig2IP.txt
D:\temp\accounts\admin\MI\vbsskripte.txt
D:\temp\accounts\admin\MO\setipconfig2IP.txt
D:\temp\accounts\admin\MO\vbsskripte.txt
D:\temp\accounts\gast\player3\setipconfig2IP.txt
D:\temp\accounts\gast\player3\vbsskripte.txt
D:\temp\accounts\gast\player56\setipconfig2IP.txt
D:\temp\accounts\gast\player56\vbsskripte.txt
D:\temp\accounts\user19\megashooter\setipconfig2IP.txt
D:\temp\accounts\user19\megashooter\vbsskripte.txt
D:\temp\accounts\user19\supershooter\serverlog.txt <font color=green> .....die war schon vorher da </font>
D:\temp\accounts\user19\supershooter\setipconfig2IP.txt
D:\temp\accounts\user19\supershooter\vbsskripte.txt

Voila, die beiden template\*.txt-Dateien sind da, wo sie hingehören. QED.
Warum unnötig kompliziert machen.

--------snipp CopyTemplatesII.bat
@for /r W:\Spiele\Accounts %%a in (.) do @if exist %%a.\..\..\template copy %%a.\..\..\template\*.txt %%a >NUL
--------snapp CopyTemplatesII.bat

HTH Biber
Bitte warten ..
Mitglied: Jediman
23.08.2005 um 15:03 Uhr
AHHHHHH

Super Danke! Damit kann ich jetzt was anfangen

Vielen lieben Dank für deine Mühe


Gruss Jediman
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Gleiche Verzeichnisse finden
gelöst Frage von thilo-55Windows Tools32 Kommentare

Hallo zusammen, evtl. hat ja jemand einen guten Tipp für für mich - eigentlich dachte ich, die Lösung meines ...

Batch & Shell

Nicht doppelt vorhandene Dateien (nur Name) finden

gelöst Frage von dareboBatch & Shell4 Kommentare

Ich bin auf der Suche nach einer einfachen Möglichkeit (z.B. Batchlösung mit Ausgabe) viele Dateien (größer 500.000) nur nach ...

Batch & Shell

Per Batch Verzeichnisse umbenennen

Frage von KirschiBatch & Shell2 Kommentare

Hallo, bisher habe ich für 2 Instanzen eines Programmes, welches Daten im Verzeichnis %appdata% benutzt, eine simple Batch verwendet. ...

Batch & Shell

Nonsense Error - find ihn nicht. (Batch)

gelöst Frage von clragonBatch & Shell7 Kommentare

Hey Leute! Ich bin's wieder. Heute habe ich ein besonders unnötiges Problem,. Aus irgendeinem Grund hat dieses Script einen ...

Neue Wissensbeiträge
Video & Streaming

Ruckelfreies Fernsehen auf Smartphone oder Tablet - in SD oder gar HD - Eine Alternative zum Fritz DVB-C Receiver

Anleitung von power-user vor 1 StundeVideo & Streaming

Wer kennt das nicht: Man möchte gemütlich auf dem Balkon sitzen und vielleicht grillen und dabei das WM-Spiel gucken ...

Erkennung und -Abwehr
Trendmicro WFBS 10 ist in deutsch verfügbar!
Tipp von VGem-e vor 10 StundenErkennung und -Abwehr

Servus Kollegen, downloadbar unter

Windows Update

Microsoft Patchday Juni 2018 - BSOD, obwohl noch kein Patch freigegeben

Erfahrungsbericht von diemilz vor 11 StundenWindows Update4 Kommentare

Hallo zusammen, wir hatten hier letzte Woche ein massives Problem. Alles begann damit, dass ein Mitarbeiter kurz vor Feierabend ...

Microsoft
Shadow Defender
Tipp von Hyrule vor 23 StundenMicrosoft

Ich denke viele kennen es: Ein Update oder ein neues Programm und vieles funktioniert nicht mehr wie gewünscht. Die ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell Netzwerkdrucker auflisten
gelöst Frage von schiggi85Batch & Shell16 Kommentare

Hallo zusammen, ich möchte mit dem invoke-command bei einem remoteclient die installierten Netzwerkdrucker des Users abfragen. Nur klappt das ...

CPU, RAM, Mainboards
ASUS P5W DELUXE startet nur manchmal und nur mit 2 GraKas
Frage von Windows10GegnerCPU, RAM, Mainboards15 Kommentare

Hallo, ich habe das o.g. Motherboard erhalten. Egal ob C2D 8400, Pentium D 945 oder P4 670, das teil ...

Outlook & Mail
Nachweis des Löschens einer Email nach DSGVO in Outlook
Frage von linuxadmOutlook & Mail13 Kommentare

Hallo Forum, wie wahrscheinlich viele von Euch kämpfe ich mit der Umsetzung der DSGVO bei meinen Kunden. Konkret geht ...

Exchange Server
Exchange 2013 kein Mail-Versand und -Empfang nach Neustart
Frage von AkroshExchange Server11 Kommentare

Hallo zusammen, ich habe hier ein Problem mit unserem Exchange Server 2013 (VM auf ESXi 6.5). Die Festplatten C ...