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?

Mitglied: webtrajo

webtrajo (Level 1) - Jetzt verbinden

26.04.2010 um 14:52 Uhr, 3323 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
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 21 StundenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 21 StundenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 1 TagDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 1 TagSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
Exchange Server
Exchange Postfach Einbindung Betriebs-rat -Arzt, Bewerbung .
gelöst Frage von YellowcakeExchange Server23 Kommentare

Hey ich habe da mal eine Denksport Aufgabe bekommen Genutzt wird ein Exchange Server 2010. hier gibt es den ...

Windows Server
Delgegierte OU via RDP verwalten - Objektverwaltung zuweisen
gelöst Frage von TOAOICEWindows Server12 Kommentare

Hallo, ich habe folgendes Problem. Ich möchte in meiner Domäne (Server2016), einer Gruppe (OUAdmin) Berechtigungen auf die OU Test ...

LAN, WAN, Wireless
Gigabit-Lan mit zwei 4-adrigen Kabeln?
Frage von ArvedirmerLAN, WAN, Wireless11 Kommentare

Ich habe folgendes Problem: Ich betreue eine kleine Firma die sich im 1.Stock eines Gebäudes befindet. Es existiert ein ...

Router & Routing
Routing Probleme mit Firewall
gelöst Frage von mb1811Router & Routing9 Kommentare

Hallo Zusammen! Ich habe folgende Problematik, wo ich ein wenig Input benötige: Gem. angehängter Skizze habe ich folgenden Stand: ...