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

Batch Befehl Attrib: Warum kennt es keine Wildcards mehr?

Frage Entwicklung Batch & Shell

Mitglied: 43060

43060 (Level 1)

13.02.2007, aktualisiert 14.02.2007, 7213 Aufrufe, 8 Kommentare

Hallo zusammen,

ich möchte einfach nur von einem Verzeichnis rekursiv alle darin enthaltenen Dateien und Unterverzeichnisse das Archivbit entfernen lassen. Dieser Einzeiler sollte funktionieren, tut es aber nicht:

attrib -a "c:\test\*.*" /s

Auch ohne Anführungszeichen verweigert Attrib seinen Dienst mit dem Kommentar "Datei c:\test\*.* nicht gefunden". Dabei sollen die Wildcards *.* in Verbindung mit dem Parameter /s ja eben rekursiv suchen und nicht nur nach einer einzelnen Datei.

Was mache ich da falsch bzw. was läuft da falsch?

Gruß,
Addi
Mitglied: cykes
13.02.2007 um 10:48 Uhr
Funktioniert hier problemlos, mit und ohne die " " unter Win XP SP2
Bitte warten ..
Mitglied: onegasee59
13.02.2007 um 11:07 Uhr
Hallo,

von wo aus startest Du den Einzeiler denn?

gruß
onegasee59
Bitte warten ..
Mitglied: cykes
13.02.2007 um 11:30 Uhr
Befinden sich denn Dateien in dem Ordner C:\test ? Wenn es nur um das Archivbit von Ordnern
geht musst Du hinten an den Befehl noch ein "/D" anfügen.
Bitte warten ..
Mitglied: 43060
13.02.2007 um 13:51 Uhr
Es handelt sich um ein Verzeichnis mit Unterverzeichnissen in denen jeweils Dateien liegen. Die Meldung erhalte ich sowohl wenn ich den Befehl direkt über die CMD eingebe, als auch wenn ich es per Skript über die Powershell ausführe. Deshalb bin ich recht ratlos.

WinXP Pro SP2

Gruß,
Addi
Bitte warten ..
Mitglied: onegasee59
13.02.2007 um 14:51 Uhr
Es handelt sich um ein Verzeichnis mit Unterverzeichnissen in denen jeweils Dateien liegen.

hhmm, dann kann ich auch keinen Fehler erkennen, denn so wäre Deine Befehlszeile völlig korrekt. Damit werden ALLE Dateien in allen Ordner mit der Attribut -a versehen.

test doch mal diesen schnippsel in einer attrib.cmd

01.
@echo off 
02.
echo Setzen von Attribut -a 
03.
attrib -a "c:\test\*.*" /s 
04.
pause 
05.
cls 
06.
echo Kontrolle ob Attribut -a gesetzt wurde 
07.
echo. 
08.
dir c:\test /a:-a 
09.
pause 
10.
cls 
11.
echo Setzten von attribut -a wieder ruecksetzen 
12.
pause 
13.
cls 
14.
echo Setzen von Attribut +a 
15.
attrib +a "c:\test\*.*" /s 
16.
pause 
17.
cls 
18.
echo Kontrolle ob Attribut +a gesetzt wurde 
19.
echo. 
20.
dir c:\test /a:a 
21.
pause
gruß
onegasee59
Bitte warten ..
Mitglied: 43060
13.02.2007 um 15:01 Uhr
Da direkt beim Versuch die Fehlermeldung erscheint, braucht man da eigentlich auch nichts überprüfen.

Ich habe jedoch einen Umweg gefunden, worüber es funktioniert.

01.
cd c:\test 
02.
attrib -a *.* /s 
Auf diese Weise funktioniert es komischerweise. Ich wechsle zuerst in das entsprechende Verzeichnis und wende dann die Wildcard alleine ohne Verzeichnisangabe an. Ist dann zwar ein Zweiteiler aber wenigstens fu.nzt es auf diese Weise. Verstehe wer will.

Gruß,
Addi
Bitte warten ..
Mitglied: onegasee59
13.02.2007 um 15:16 Uhr
dann startest Du die CMD vermutlich nicht auf LW C?

Problematisch wird sowas, wenn Du eine komplexere Batch für jemand anderen schreibst von der Du nicht weist wo man sie letztendlich ablegt und die gesamte Batch sogar noch aus mehren *.cmd-Modulen besteht. Dabei muss man sicherstellen das nach Abarbeitung eines Befehls die "aufgerufene.cmd" immer wieder zur "aufrufenden.cmd" und damit zum Startpfad der Batch zurückwechselt.

ich mach sowas daher immer so in der "Start.cmd" einer Batch.

... ganz am Anfang der "Start.cmd" kommt
...
set startpfad=%~dp0
...die Variable "%startpfad%" ermittelt automatisch den Pfad von der die Batch gestartet wird.
...Interessant vor allem dann, wenn man eine Batch auf USB-Stick einsetzt, wo man letztendlich
...das zugewiesene LW nicht kennt und nicht fest vorgeben kann.
...Der Inhalt von %startpfad% = LW:/Startpfad der Batch/
...Wenn ich also aus der "Start.cmd" einen weitere "*.cmd" aufrufen muss folgt:
call "%startpfad%weitere_Befehlsliste.cmd"
...ich bin jetzt in der "weitere_Befehlsliste.cmd"
...mit "pushd" gebe ich jetzt an das ich in ein anders LW:/Pfad wechseln will,
...die Batch sich aber merken soll von wo ich gekommen bin, also "%startpfad%weitere_Befehlsliste.cmd"
pushd "LW:X\irgendein_pfad"
...hier folgen die Befehle für das was ich in "LW:X\irgendein_pfad" machen will
popd
...mit "popd" kehre ich wieder zurück zu dem Pfad von dem ich "LW:X\irgendein_pfad" aufgerufen habe,
...also "%startpfad%weitere_Befehlsliste.cmd"


hoffe das war nicht zu verwirrend.

gruß
onegasse59
Bitte warten ..
Mitglied: 43060
14.02.2007 um 08:24 Uhr
Danke für die Info. Nun der Pfad inkl. Laufwerksbuchstabe ist festgegeben. Darüber hinaus handelt es sich hier auch nicht um ein Batch-Script in der CMD. Ich führe den Befehl in der Powershell aus.

Gruß,
Addi
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...