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

Mit Batch untergeordneten Ordner suchen

Frage Entwicklung Batch & Shell

Mitglied: JK87

JK87 (Level 1) - Jetzt verbinden

14.09.2005, aktualisiert 15.09.2005, 20372 Aufrufe, 7 Kommentare

Hey,

habe folgendes Problem:

Ich möchte in einem bestimmten Ordner nach einen Unterordner suchen, welcher sich namentlich ständig ändert!
ODER
In einem Ordner alle untergeordneten Ordner nach Datei test.txt durchsuchen und Pfad als Variable speichern!

Danke für alle Hilfen

JK
Mitglied: Biber
14.09.2005 um 15:46 Uhr
Moin, JK87,

entweder mit "FOR /R... IN .. DO":
01.
::-------snipp FindDirContainingTestTxt.bat------------------------------------- 
02.
@for /R <i>x:\parentDir</i> %%i in (tes?.txt) do Set FoundDir=%%~dpi 
03.
::-------snapp FindDirContainingTestTxt.bat------------------------------------
oder mit "FOR /F" und "attrib " oder "Dir /s":
01.
::-------snipp OtherFindDirContainingTestTxt.bat--------------------------------- 
02.
@for /F "tokens=1-2" %%i in ('attrib /s <i>x:\Parentdir</i>\test.txt') do set FoundDir=%%~dpj 
03.
::-------snapp OtherFindDirContainingTestTxt.bat-------------------------------------------
für X: und ParentDir muss Du natürlich Deine Werte einsetzen.

..auch -zig andere Oneliner-Variationen sind möglich .. schau mal bei "Help FOR".

Frank / der Biber aus Bremen
Bitte warten ..
Mitglied: JK87
14.09.2005 um 17:39 Uhr
Wie kann ich das mir folgenden verknüpfen?
%%~dpi = soll der gefunden Ordner sein

set prefs="%%~dpi\prefs.js"
echo user_pref("network.proxy.type", 1); >>%prefs%
Bitte warten ..
Mitglied: Biber
14.09.2005 um 18:27 Uhr
Wie kann ich das mir folgenden verknüpfen?
%%~dpi = soll der gefunden Ordner sein
Hm, könnten wir auch machen- ich hab den aber lieber %FoundDir% genannt, damit ich ihn wiederfinde..

set prefs="%%~dpi\prefs.js"
Wenn es machbar ist, dann schreib doch hier: set prefs="%FoundDir%\prefs.js"
Wenn Du die Variable aber nur an dieser einzigen Stelle brauchst, dann kannst du auch gleich in der "DO"-Anweisung oben schreiben:
....DO Set prefs="%%~dpi\prefs.js" ...bzw. ....DO Set prefs="%%~dpj\prefs.js"

echo user_pref("network.proxy.type", 1); >>%prefs%
Bist Du sicher mit dem ">>" (Anhängen)? Steht da schon mehr drin? Oder ist nicht ein ">" (Neu anlegen) sinnvoller?
Ich würde sonst zumindest schon vorhandene "user_pref"-Zeilen rausfiltern, falls die prefs.js schon vorhanden ist.
Aber das war ja auch gar nicht Deine Frage, geht mich auch nichts an.
Liebe Grüße
Biber
Bitte warten ..
Mitglied: JK87
14.09.2005 um 20:25 Uhr
Dank, Danke, Danke funktioniert genau so wie ich mir das vorgstellt habe!

%%~dpi war nur ein Beispiel, hab es nun eh so gemacht wie du

JK

PS: Nur aus wissensdrang, wofür steht das "tes?.txt"? Darf man ja nicht ändern sonst funkts nicht.
Bitte warten ..
Mitglied: Biber
14.09.2005 um 21:02 Uhr
Freut mich, dass es klappt, JK87...
das mit den erforderlichen Wildcards in dem "FOR /R"-Befehl ist auch so eine Geschichte, bei der die Sichtweisen von M$ und mir auseinandergehen: M$ hält es für ein Feature, ich eher für einen Bug.

Fakt ist, bei dem "FOR /R"-Befehl, der wirklich SAUSCHNELL ist und den ich gerne nutze, darf man/frau keine vollständigen Dateinamen angeben. Es muss ein "*" oder ein "?" im Dateinamen enthalten sein.

Auf Deutsch: (Beispiel vom CMD-Prompt aus)
01.
for /R c:\ %i in (test.txt) do @echo %~i 
ergibt
01.
c:\test.txt 
02.
c:\CA_LIC\test.txt 
03.
c:\Config.Msi\test.txt 
04.
c:\DB2LOG\test.txt 
05.
c:\Dokumente und Einstellungen\test.txt 
06.
c:\Dokumente und Einstellungen\Administrator\test.txt 
07.
c:\Dokumente und Einstellungen\Administrator\Anwendungsdaten\test.txt .....
...also "findet" in jedem gottverdammten Verzeichnis eine Datei test.txt.

Ist nicht das, was ich von ihm wollte. Mit einem Buchstaben durch "?" ersetzt funktionierts,
01.
for /R c:\ %i in (te?t.txt) do @echo %~i 
da "findet" er nur die "test.txt" dort, wo sie vorhanden ist.

Okay, okay... kann natürlich sein, dass er (wenn es das Schicksal will) statt dessen eher eine "teat.txt" oder "telt.txt" findet, wenn ich nach "te?t.txt" suche.... aber mit Risiken muss man leben. Ich unterstelle mal, Du suchst ja auch nach einer Datei mit toitoitoi seltenerem Namen und setzt das "?" richtig.

Ich habe jedenfalls für dies und jenes einen Batch namens ForAllFiles.bat, den ich immer aufrufe, wenn ich irgendetwas mit ALLEN gleichnamigen Dateien auf meinen Laufwrken tun will ( z.B. für alle comctl32.ocx die Versionsnummer anzeigen oder alle Dateien "Read.me" umbenennen in "VerzeichnisnameReadme.txt oder was auch immer so anfällt. Und dieser ForAllFiles.bat besteht natürlich auch nur aus einem aufgebohrten "FOR /R" -Konstrukt... in dem ich auch nach Dateien "comctl3?.ocx" und "Read.?e" suchen muss.
Lässt sich nach dieser Erläuterung auch von jedem Newbie in zweieinhalb Minuten nachbilden.

Schönen Abend Dir
Biber
Bitte warten ..
Mitglied: JK87
15.09.2005 um 09:42 Uhr
Hab es mit "..\..\prefs.js" bis jetzt gelöst.

Aber danke für den Tipp mach es jetzt so wie du (pre?s.js), den das es diese seltene Datei nochmals gibt ist unwahrscheinlich.

Danke für alles

JK
Bitte warten ..
Mitglied: Biber
15.09.2005 um 10:05 Uhr
Moin, JK87,

wenn Dir das zu unsicher ist, nimm den normalen "DIR"-Befehl:
01.
for /f "delims=" %%i in ('dir /s /b x:\parentDir\prefs.js') do Set  prefs="%%~dpi\prefs.js"
("delims=" nur, falls Leerzeichen in den Pfadangaben sein können. )

Aber der "FOR /R " ist wirklich schneller.

LG Biber
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Server
gelöst Datei per Batch in Ordner mit sich ständig änderndem Namen kopieren (3)

Frage von Drxrey zum Thema Windows Server ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (29)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...