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
GELÖST

Dateiendung mit Wildcard?

Frage Entwicklung Batch & Shell

Mitglied: Saschbert

Saschbert (Level 1) - Jetzt verbinden

24.09.2007, aktualisiert 25.09.2007, 5836 Aufrufe, 11 Kommentare

.auf.* als Wildcard in einer Batch?

Hallo Leute,

mit der hier zu lesenden Hilfe auf administrator.de habe ich bereits eine Datei soweit zurechtstricken können, jedoch nicht wirklich so, wie ich es brauche. Und zwar geht es darum, dass ich einen Ordner habe, der n Unterordner haben kann, in denen Dateien liegen. Nun brauche ich alle Dateien, die nicht auf eine bestimmte Dateiendung lauten, dazu habe ich ein prima Script hier gefunden, und es auch soweit genutzt. Jedoch geht es bei mir noch ein Stück weiter: Die Dateien haben als Endung immer .auf. + eine 9-stellige Zahl. Nun habe ich mir gedacht, nutze ich doch einfach die Wildcard, sprich set "ext=.auf.*", aber das funktionierte nicht, also habe ich versucht, es unten in der Zeile mit zu übergeben, aber das funktioniert auch nicht.

Daher hier die Frage: Kann ich das mit übergeben, oder geht das garnicht? Oder wie könnte ich das Realisieren?


01.
@echo off & setlocal 
02.
 
03.
set "Ordner=E:\Allgemein\Daten\TA1\NEUE_Dateien" 
04.
set "ext=auf" 
05.
set "Liste=E:\Allgemein\Daten\TA1\NEUE_Dateien\uebersehene_Dateien.txt" 
06.
goto MAIN 
07.
 
08.
:MAIN 
09.
rem   Abfrage, ob die Suche gestartet werden soll. 
10.
cls 
11.
echo. 
12.
echo  #################################### 
13.
echo  # Achtung:                         # 
14.
echo  # --------                         # 
15.
echo  # Die Suche dauert ca. 30 Minuten! # 
16.
echo  #################################### 
17.
echo. 
18.
echo. 
19.
choice /c jn /m "Soll die Suche getartet werden?   " 
20.
if errorlevel 2 goto VORZEITIG 
21.
if errorlevel 1 goto LOESCHEN 
22.
if errorlevel 255 goto FEHLER 
23.
 
24.
:LOESCHEN 
25.
rem   Alte TXT-Liste löschen, wenn vorhanden. 
26.
echo. 
27.
echo. 
28.
echo Alte Suchliste wird geloescht ... 
29.
if exist "%Liste%" del "%Liste%" 
30.
echo. 
31.
echo Alte Suchliste geloescht! 
32.
goto SUCHE 
33.
 
34.
:SUCHE 
35.
rem   Die Suchfunktion, die die Werte in die Liste schreibt 
36.
echo. 
37.
echo. 
38.
echo Suche nach Dateien laeuft ... 
39.
for /f %%i in ('time /t') do set startZeit=%%i 
40.
echo Suche gestartet um %startZeit% 
41.
for /f "delims=" %%i in ('dir /b /s /a-d "%Ordner%"') do if /i "%%~xi" neq ".%ext%.*" echo %%i >>"%Liste%" 
42.
echo. 
43.
for /f %%i in ('time /t') do set endZeit=%%i 
44.
echo Suche nach Dateien beendet, Liste geschrieben um %endzeit% 
45.
goto ENDE 
46.
 
47.
:VORZEITIG 
48.
rem   Bei Abbruch der Suche 
49.
echo. 
50.
echo. 
51.
echo. 
52.
echo Verarbeitung abgebrochen. Zum schliessen des Fensters beliebige druecken. 
53.
echo. 
54.
echo. 
55.
pause 
56.
goto eof 
57.
 
58.
:ENDE 
59.
rem   Ende des Batchfiles 
60.
echo. 
61.
echo. 
62.
echo. 
63.
echo Verarbeitung beendet. Zum schliessen des Fensters beliebige druecken. 
64.
echo. 
65.
echo. 
66.
pause 
67.
goto eof

Vielen Dank,
Saschbert
Mitglied: TuXHunt3R
24.09.2007 um 12:15 Uhr
Versuchs mal so:

01.
set "ext"=="*auf*"
Sollte theoretisch gehen, das ist das, was mir auf den ersten Blick einfällt
Bitte warten ..
Mitglied: Saschbert
24.09.2007 um 13:28 Uhr
Versuchs mal so:

01.
> set "ext"=="*auf*" 
02.
> 
Sollte theoretisch gehen, das ist das, was
mir auf den ersten Blick einfällt

Vielen Dank für den Versuch, doch leider funktioniert das so nicht, habe es sowohl in Deiner Variante versucht, als auch in der Variante, dass ich *.auf.* versucht habe. Scheinbar mag er bei Variablen keine Wildcards oder so.

Hat noch jemand eine Idee/Lösung?
Bitte warten ..
Mitglied: TuXHunt3R
24.09.2007 um 15:54 Uhr
So hast du es auch schon probiert?

01.
 
02.
for /f "delims=" %%i in ('dir /b /s /a-d "%Ordner%"') do if /i "%%~xi" neq "*.auf.*" echo %%i >>"%Liste%" 
03.
 
04.
 

Eine Frage: Bedeutet "neq" not equal, d.h. nicht gleich? Hab das noch nie gebraucht, höchstens bei der Powershell
Bitte warten ..
Mitglied: Biber
24.09.2007 um 18:06 Uhr
Moin Saschbert,

Du kommst dem vermeintlichen Fehler schneller am CMD-Prompt auf die Spur.

01.
>echo bsss>test.auf.12344 
02.
>dir /b *.auf.* 
03.
test.auf.12344 
04.
 
05.
C:\Dokumente und Einstellungen\Biber>for %i in (*.auf.*) do @echo [%~ni] [%~xi] 
06.
[test.auf] [.12344]
Wie hoffentlich zu sehen ist,
  • ist nicht etwa "test" der Name der Datei, sondern "test.auf"
  • und nicht ".auf.12344" die eXtension, sondern ".12344".

Also STREICHE:
01.
for /f "delims=" %%i in ('dir /b /s /a-d "%Ordner%"') do if /i "%%~xi" neq ".%ext%.*" echo %%i >>"%Liste%"
SETZE:
01.
for /f "delims=" %%i in ('dir /b /s /a-d "%Ordner%\*.%ext%.*"') do @echo %%i >>"%Liste%"
Grüße
Biber

P.S. "neq" ist in der Tat neudeutsch für "ungleich".
Die anderen stehen unter der Hilfe zu IF ("If /?" am CMD-Prompt).
Bitte warten ..
Mitglied: Saschbert
25.09.2007 um 10:19 Uhr
Moin Saschbert,

Du kommst dem vermeintlichen Fehler
schneller am CMD-Prompt auf die Spur.


Vielen Dank! Jedoch geht dies auch nicht so, wie ich es brauche, aber fast. Habe schon versucht, über den Prompt etwas zu erreichen, aber Batch-Programmierung ist einfach nicht mein Ding.

Was passiert?
Die Dateien, die eigentlich nicht angezeigt werden sollen, werden nur noch angezeigt. Es soll im Script ja so sein, dass genau die Dateien mit '''*.auf.*''' ignoriert werden, und nur alle anderen Dateien angezeigt werden.

Anbei ein paar Beispiele, wie die Dateien am Ende aussehen könnten:
.auf.331400529
.AUF.340552406
.auf.341520238
.AUF.391600304
.AUF.430825449
.AUF.501201163
.AUF.601614765

Wie gesagt, das Format am Ende der Daten ist immer gleich:
[n-zeichen].auf.[9-stellige Zahl]


Gruß
Saschbert
Bitte warten ..
Mitglied: Biber
25.09.2007 um 11:31 Uhr
Moin Saschbert,

sorry, dann hatte ich zu unaufmerksam gelesen.

Jetzt habe ich es aber verstanden (glaube ich).

Also dann quäle dich bitte noch mal an den CMD-Prompt.
Wir nehmen den XCOPY-Befehl.
[CMD-Prompt]
01.
echo *.auf.*>%temp%\exclude.lst 
02.
xcopy . %temp%\egal\  /Exclude:%temp%\exclude.lst  /L [sonstigeXCopy-Parameter]
Der zweite Befehl sollte als vollwertiger Ersatz für Dein DIR-Konstrukt dienen.
Denn der listet alle Dateien außer den *.auf*-Dateien auf.

Grüße
Biber
Bitte warten ..
Mitglied: Saschbert
25.09.2007 um 12:20 Uhr
Hallo Biber,

vielen Dank nochmal, aber es kommt noch immer nicht das richtige Ergebnis, sprich die Dateien, die unter anderem *.auf.* haben, werden dennoch gelistet, was ja nicht sein sollte.

Nun mag es sein, dass ich das ganze falsch eingebaut habe, daher hier nochmal die entsprechend wichtigen Zeilen, um die es geht:
01.
set "Ordner=E:\Allgemein\Daten\TA1\NEUE_Dateien\" 
02.
set "ext=auf" 
03.
set "Liste=E:\Allgemein\Daten\TA1\NEUE_Dateien\uebersehene_Dateien.txt" 
04.
if exist "%Liste%" del "%Liste%" 
05.
echo *.auf.* > %temp%\exclude.lst 
06.
for /f "delims=" %%i in ('xcopy . %temp%\egal\ /Exclude:%temp%\exclude.lst /S /L') do @echo %%i >>"%Liste%"
Habe ich da noch einen Fehler? In der Umsetzung evtl.? Im XCopy habe ich noch die Option /S übernommen, da er ja auch Unterornder durchsuchen müsste.

Gruß
fast am verzweifelnder Saschbert
Bitte warten ..
Mitglied: bastla
25.09.2007 um 12:38 Uhr
Hallo Saschbert!

Und so?
01.
dir /s /b|findstr /v /i ".auf." >>"%Liste%"
Grüße
bastla
Bitte warten ..
Mitglied: bastla
25.09.2007 um 12:44 Uhr
... bzw etwas genauer (um wirklich nur ein ".auf." vor der Zahl am Ende zu erfassen):
01.
for /f "delims=" %%i in ('dir /s /b') do for /f "delims=" %%d in ('echo %%~ni') do @if /i "%%~xd" neq ".auf" echo %%i >>"%Liste%"
Grüße
bastla
Bitte warten ..
Mitglied: Biber
25.09.2007 um 12:45 Uhr
Moin Saschbert,

die Wurzel allen Übels heißt wieder mal M$....- denen musst Du es noch langsamer erklären.

Funktionieren tut es (anscheinend) doch nicht so zuverlässig mit Wildcards, dafür aber so:

1. Eine Positiv-Liste mit "Dir /s /b" erzeugen.
2. Diese als EXCLUDE-Liste benutzen.

01.
>dir /s /b .\*.auf.*>exclude.lst 
02.
(=12:34:54  D:\temp=) 
03.
>type exclude.lst 
04.
D:\temp\test.auf.12345678 
05.
 
06.
(=12:35:07  D:\temp=) 
07.
>xcopy d:\temp\test*.* c:\temp /Exclude:exclude.lst  /L /s
Beim unteren XCopy-Ergebnis ist dann keine *.auf.*-Datei mehr dabei.
Wichtig scheint zu sein, dass -da ja in der mit TYPE angezeigten Liste auch der volle Pfad steht- beim XCopy /L -Befehl auch derselbe Pfad ("D:\Temp\") explizit mit angegeben wird.

Grüße
Biber
Bitte warten ..
Mitglied: Saschbert
25.09.2007 um 13:05 Uhr
@bastla
Vielen Dank, Deine Version funktionierte. Habe Sie nur um /a-d ergänzt, um die Ordner nicht angezeigt zu bekommen.

@Biber
Auch Dir vielen Dank, aber ich nutze die Version von bastla, weil die so schön einfach ist, und funktioniert. Aber vielen Dank für die Mühe, die Du mit mir hattest.

@bastla&Biber
*knutsch*

@all
Anbei nochmal das kleine Script, das nun so, wie gewünscht, funktioniert (nur die wichtigen Zeilen!):
01.
@echo off & setlocal 
02.
 
03.
rem   Order der durchsucht werden soll, inkl. Unterordner 
04.
set "Ordner=E:\Allgemein\Daten\TA1\NEUE_Dateien\" 
05.
 
06.
rem   Pfad und Name zur Listendatei 
07.
set "Liste=E:\Allgemein\Daten\TA1\NEUE_Dateien\uebersehene_Dateien.txt" 
08.
 
09.
rem   Wenn die Listendatei besteht, wird sie vor dem Neuanlegen gelöscht. 
10.
if exist "%Liste%" del "%Liste%" 
11.
 
12.
rem   Selektion des Ergebnisses in die Listendatei, außer Ordnernamen 
13.
rem   und Dateien mit dem Inhalt ".auf." im Namen. 
14.
dir /s /a-d /b|findstr /v /i ".auf." >>"%Liste%"
Vielen Dank und lieben Gruß
Saschbert
Bitte warten ..
Ähnliche Inhalte
Hosting & Housing
Dyndns.org wildcard
Frage von mahala60Hosting & Housing

ich habe eine Domain bei dyndns.org mit dieser domain kann ich auf einen bestimmten rechner, was auch funktioniert. bei ...

Windows Server
Dateiendungen verbieten
gelöst Frage von MahagonWindows Server10 Kommentare

Moin, ich möchte aufgrund dessen, dass in der Branche in der ich arbeite viele Kunden mit einem Cryptovirus befallen ...

Verschlüsselung & Zertifikate
SSL-Webserver-Wildcard-Zertifikate
Frage von OlliPWSVerschlüsselung & Zertifikate5 Kommentare

Moin, wer kann mir SSL-Webserver-Wildcard-Zertifikate bisschen erklären? wir haben eine Domain draußen bei einem Dienstleister registiert. mustermax.org Jetzt haben ...

Exchange Server
Wildcard Zertifikat und Exchange 2013
Frage von redlordExchange Server7 Kommentare

Folgendes Szenario: Hauptdomäne ist mydom.de, darunter existieren vpn.mydom.de und mail.mydom.de (2 externe Anbindungen), das interne netz dahinter heist verwaltung.mydom.de. ...

Neue Wissensbeiträge
Sicherheit

TLS-Zertifikat und privater Schlüssel von Microsofts Dynamics 365 geleakt

Information von Penny.Cilin vor 1 StundeSicherheit

Microsoft hat versehentlich das TLS-Zertifikat inklusive dem privaten Schlüssel seiner Business-Anwendung Dynamics 365 geleakt. TLS-Zertifikat und privater Schlüssel von ...

Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 23 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 1 TagRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 4 TagenInternet21 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Brainstorming, einfachste Option 1 getrenntes LAN (mit WAN zugang)
Frage von 132954LAN, WAN, Wireless13 Kommentare

Hi, folgendes: Wir bekommen eine Glasfaser Leitung, Und das sollte Optional so aussehen: Ein Modem/Router für das WAN, ein ...

Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Netzwerkgrundlagen
Hi eine blöde frage. xD
Frage von 132954Netzwerkgrundlagen12 Kommentare

Also: Habe 2012 r2 essentials neuinstalliert, allerdings installiert diese version ja gleich diesen gangen AD kram mit, den hab ...

Netzwerkmanagement
Firefox Profieles im Roaming
gelöst Frage von Hendrik2586Netzwerkmanagement12 Kommentare

Hallo liebe Leute. :) Ich hab da ein kleines Problem, welches anscheinend nicht unbekannt ist. Wir nutzen hier in ...