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

Batch Script welches Pfad zu allen a.txt Dateien ausgibt?

Frage Entwicklung Batch & Shell

Mitglied: webtrajo

webtrajo (Level 1) - Jetzt verbinden

26.04.2010 um 14:52 Uhr, 3309 Aufrufe, 16 Kommentare

Hallo,

ich bin auf der Sucher nach einem Script welches einen Verzeichnispfad auf meiner
Festplatte nach "a.txt" durchsucht und mir dazu die dazugehörigen Pfade ausgibt.

Hat jemand eine Idee?

Vielen Dank!
Gruß
Mitglied: Dani
26.04.2010 um 14:56 Uhr
Hi,
versuch es mal manuell in der Konsole mit "dir /s /b a.txt". Damit sollten alle Dateien gefunden und ausgegeben werden.


Grüße,
Dani
Bitte warten ..
Mitglied: webtrajo
26.04.2010 um 15:05 Uhr
Hallo,
leider kein Erfolg. Gibt es eine andere Möglichkeit?
Gruß
Bitte warten ..
Mitglied: edepfau
26.04.2010 um 15:05 Uhr
Auf der Kommandozeile listet
01.
for /R E:\PFAD %i in (a.txt) do @echo %i
alle Dateien namens "a.txt" in E:\PFAD und allen Unterverzeichnissen auf, vollständig mit Pfad.

01.
for /R E:\PFAD %i in (a.txt) do @echo %~pi
gibt nur die Pfade zurück. Allerdings auch mehrfach, wenn es mehr als ein Treffer pro Verzeichnis gibt.



Hast Du wirklich vorher schon alles durchprobiert gehabt?

Gruss,
Ede
Bitte warten ..
Mitglied: Dani
26.04.2010 um 15:10 Uhr
Hi,
seltsam...was für ein Betriebssystem benutzt du?

Bei mir sieht das so aus:
01.
C:\>dir /s /b firefox 
02.
C:\Lokal\Firefox 
03.
C:\Lokal\Firefox\App\Firefox 
04.
C:\Users\test\AppData\Roaming\Mozilla\Firefox
Läuft bei mir unter Windows 7...


Grüße,
Dani
Bitte warten ..
Mitglied: bastla
26.04.2010 um 15:26 Uhr
@edepfau
Schaut auch lustig aus, wenn Du
for /R E:\PFAD %i in (ichbinnichtda.txt) do @echo %i
draus machst ...

Insofern würde ich Danis Ansatz bevorzugen (und zur Not mit "/a-d" ergänzen).

Grüße
bastla
Bitte warten ..
Mitglied: edepfau
26.04.2010 um 15:42 Uhr
das scheint eine Eigenart der for-Schleife zu sein..kann aber sehr einfach durch
01.
for /R E:\PFAD %i in (a.txt) do @if exist %i echo %~pi
behoben werden.
Inzwischen habe ich mich darum gekümmert, den uniq-Befehl nachzubilden, damit die Pfade nur einmal angezeigt werden.

Das geht in einem Batchfile z.B. so
01.
@echo off 
02.
for /R E:\PFAD %%i in (%1) do @if exist %%i CALL :COMP "%%~pi" 
03.
set _last= 
04.
set _this= 
05.
goto :EOF 
06.
 
07.
:COMP 
08.
set _this=%~1 
09.
if defined _last ( 
10.
   if not "%_last%"=="%_this%" ( 
11.
      set _last=%_this% 
12.
      echo %_this% 
13.
14.
) else ( 
15.
   echo %_this% 
16.
   set _last=%_this% 
17.
18.
goto :EOF
Als erster Parameter wird der Dateiname oder ein Muster erwartet (*.log). Ausserdem werden hier Pfade mit Leerzeichen richtig behandelt.

Der Vorschlag mit "dir /s" hat den Nachteil, dass keine Pfade aufgelistet werden.
Bitte warten ..
Mitglied: bastla
26.04.2010 um 16:07 Uhr
@edepfau
Der Vorschlag mit "dir /s" hat den Nachteil, dass keine Pfade aufgelistet werden.
Sollte wirklich "nur Pfade" gemeint gewesen sein, dann wäre natürlich eine Schleife erforderlich - zB in der "/f"-Variante (müsste sich dann auch nur um die tatsächlichen Treffer kümmern) - konkret:
for /f "delims=" %%i in ('dir /s /b /a-d "E:\PFAD\a.txt"') do @echo %%~dpi
Abgesehen davon würde ich "Pfad" trotzdem nicht so eng auslegen und daher eher "%%~dpi" verwenden ...

... was allerdings beides letztlich nur webtrajo (BTW: Willkommen im Forum!) wirklich wissen kann.

Grüße
bastla

P.S.: "unique" je Verzeichnis sollten Dateien namens "a.txt" eigentlich ohnehin sein ...
Bitte warten ..
Mitglied: Biber
26.04.2010 um 16:19 Uhr
Moin bastla und edepfau,

Zitat von bastla:
@edepfau
Schaut auch lustig aus, wenn Du
for /R E:\PFAD %i in (ichbinnichtda.txt) do @echo %i 
> 
draus machst ...
Zitat von edepfau:
das scheint eine Eigenart der for-Schleife zu sein..kann aber sehr einfach durch
01.
> for /R E:\PFAD %i in (a.txt) do @if exist %i echo %~pi 
02.
> 
behoben werden.
Nun macht mal nicht die jungen Nachwuchstalente nervös.
So schlimm haben es die RedmonderInnen ja auch nicht zusammenphantasiert.

Der oben von bastla angesprochene Effekt tritt natürlich nur auf, wenn man/frau es zulässt - dadurch, dass eine Datei EXAKT gesucht / Wildcards weggelassen werden.

Wird der Dateiname "ichBinNichtDa.bla" um ein Wildcard-Fragezeichen z.B am Ende ergänzt, dann kommt kein vermeintlicher Fehlalarm.
Oder nochmal zur Verdeutlichung:
>for /r "." %i in (bla.blubb) do @echo %i 
.... 
D:\temp\test\texte\bla.blubb 
D:\temp\test22\bla.blubb 
D:\temp\test222\bla.blubb 
D:\temp\testheute\bla.blubb 
.... 
.....{ gibt es natürlich nirgends, aber 57 Unterverzeichnisse werden aufgelistet } 
 
>for /r "." %i in (bla.blubb?) do @echo %i 
{ keine einzige Zeile Output .... as should do...} 
-- 
-- Gegenprobe mit EXISTIERENDEN Dateien: mit und ohne Wildcards: 
-- 
>for /r "." %i in (feef.txt) do @echo %i 
...{Existiert 1x, aber 57 Verzeichnisse werden angelistet} 
>for /r "." %i in (feef.txt?) do @echo %i 
D:\temp\test\feef.txt ----> genau eine Fund-Zeile as should do
Grüße
Biber

P.S.
Der Vorschlag mit "dir /s" hat den Nachteil, dass keine Pfade aufgelistet werden.
Dann könnten wir doch "Dir /s /b" nehmen...,-)
Bitte warten ..
Mitglied: edepfau
26.04.2010 um 16:34 Uhr
01.
>for /r "." %i in (bla.blubb?) do @echo %i 
krank, aber cool; danke, wieder was gelernt.
Ich werde immer noch nicht glücklich mit "dir /s/b". Anders als der OP suche ich nämlich gleich nach einem wildcard (*.log), nach der Überlegung "kann er wildcard, kann er auch exakte Namen". Dann brauche ich aber ein uniq hinterher, um mehrfache Pfade auszusieben.
Ist doch gelungen, oder? (uniq meine ich)

Gruss,
Ede
Bitte warten ..
Mitglied: LotPings
26.04.2010 um 16:53 Uhr
Zitat von edepfau:
Dann brauche ich aber ein uniq hinterher, um mehrfache Pfade auszusieben.
Ist doch gelungen, oder? (uniq meine ich)
Hallo Ede,

wenn man mal vom didaktischen Nutzen der Variable "_this" absieht ließe sich das kürzer formulieren:
:COMP 
if defined _last if "%_last%"=="%~1%" Goto :eof 
echo.%~1 
set "_last=%~1"
Gruß
LotPings
Bitte warten ..
Mitglied: edepfau
26.04.2010 um 17:09 Uhr
Hallo LotPings,

ja, viel klarer jetzt:
01.
:UNIQ 
02.
if defined _last if "%_last%"=="%~1" goto :EOF 
03.
echo %~1 
04.
set "_last=%~1" 
05.
goto :EOF
In der Zeile 2 war noch ein "%" zuviel. Der Code wird jetzt auch etwas schneller laufen, weil weniger shells gestartet werden müssen.

Falls der OP noch mitliest: im Batchfile weiter oben muss jetzt natürlich CALL :UNIQ stehen.

NB: "echo.%var" und "echo %var" sind äquivalent, oder kenne ich da was noch nicht?
Bitte warten ..
Mitglied: LotPings
26.04.2010 um 17:27 Uhr
Zitat von edepfau:
NB: "echo.%var" und "echo %var" sind äquivalent, oder kenne ich da was noch nicht?
Alte (gute) Gewohnheit, wenn eine Variable keinen Inhalt hat, verhindert der Punkt das Echo den Satus [ON|OFF] zurückgibt.

Gruß
LotPings
Bitte warten ..
Mitglied: bastla
26.04.2010 um 17:45 Uhr
... verhindert der Punkt das Echo den Satus [ON|OFF] zurückgibt.
... es darf aber zB auch ein "\", ein "," oder ein ";", oder wenn Du magst auch ein "+" sein - so, wie eben bei Bedarf auch eine Leerzeile erzeugt werden kann ...
---
So schön die "UNIQisierung" inzwischen auch umgesetzt ist - ich sehe in diesem Fall weiterhin keine Notwendigkeit dafür (es sei denn, webtrajo hätte tatsächlich mehrere "a.txt" in einem Verzeichnis versammelt ) ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
26.04.2010 um 18:00 Uhr
Zitat von bastla:
... es darf aber zB auch ein "\", ein "," oder ein ";", oder wenn Du magst auch ein "+" sein - so, wie eben bei Bedarf auch eine Leerzeile erzeugt werden kann ...
Wenn schon, denn schon ":" und "/" tun es auch.
Im Usenet gab es mal eine Untersuchung dazu, welche der Trenner schneller verarbeitet wurden, aber bei der Geschwindigkeit heutiger CPUs ist das marginal.

Gruß
LotPings
Bitte warten ..
Mitglied: Biber
26.04.2010 um 18:04 Uhr
[OT] @bastla
Zitat von bastla:
es sei denn, webtrajo hätte tatsächlich mehrere "a.txt" in einem Verzeichnis versammelt ) ...

Ich nehme doch stark an, dass so ein 64bit-Win7-OktaCore-Bolide auch Dateien in 3 oder 4 Dimensionen stapeln kann, oder?

Sonst hätten wir doch alle immer noch mit Windows XP mailen und Solitaire spielen können...

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: bastla
26.04.2010 um 18:05 Uhr
[OT]
@LotPings
Ja willst Du denn Biber gar nix mehr übrig lassen?

Grüße
bastla
[/OT]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
INI Datei über Batch Script verändern
Frage von SchmidleBatch & Shell3 Kommentare

Hallo zusammen, ich muss in einer ini Datei einen Eintrag anpassen, der den ProxyServer hinterlegt. Wir haben einen neuen ...

Batch & Shell
Batch Script soll aus einer Datei ein Zeileninhalt in ein anderen Batch kopieren und erweitern
Frage von Fazer1000Batch & Shell4 Kommentare

Hallo ich habe keine erfahrung mit Batch Script. Ich möchte gerne mit Hilfe eines Scriptes ein Befehl erzeugen der ...

Microsoft
Batch Datei zum Kopieren bestimmter ordner mit Pfad
gelöst Frage von eivloxMicrosoft6 Kommentare

Hallo zusammen , Hab schon ein bisschen gegoogled aber nichts passendes gefunden . Folgendes Problem: Ich möchte einen Ordner ...

Batch & Shell
BATCH: Leerzeichen im Registry Pfad
gelöst Frage von 118710Batch & Shell1 Kommentar

Hallo zusammen, dies ist mein erste Beitrag hier und ich hoffe ich bin richtig :P So! Erst ein mal ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 10 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 15 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 15 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Häufig Probleme beim Anmelden in WLAN
Frage von mabue88LAN, WAN, Wireless15 Kommentare

Hallo zusammen, in einem Netzwerk gibt es relativ häufig (1-2 mal pro Woche) Probleme mit der WLAN-Verbindung. Zunächst mal ...

Windows Server
SMBv1 deaktivieren führte zur Katastrophe, keine Domänenanmeldung mehr
Frage von Freak-On-SiliconWindows Server14 Kommentare

Servus; Habe Mist gebaut. Umgebung: Server 2012R2 Domäne 2x DC ~10 Memberserver (2012R2 und 2008R2) ~100 Windows 8 Clients ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Grafikkarten & Monitore
2x 4K Monitore an einer GraKa betreiben
gelöst Frage von JollyJumper83Grafikkarten & Monitore10 Kommentare

Hallo liebe IT-Gemeinde, ich bin auf der Suche nach einer kostengünstigen GraKa für meinen Präsentations-PC. Wir möchten in unserem ...