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

Wenn die Datei kein Ordner ist soll er die Endung entfernen

Frage Entwicklung Batch & Shell

Mitglied: Blueberry

Blueberry (Level 1) - Jetzt verbinden

23.10.2008, aktualisiert 26.01.2012, 4448 Aufrufe, 8 Kommentare

Hallo Zusammen,

Ich habe ein Programm das Dateien komprimiert (Standard-Zip-Format), aber wenn ich da ein .TXT File rein gebe, dann gibt es die endung .txt.zip... Da ich aber auch Ordner zippen möchte, kann ich nicht einfach die Endung "abschneiden"... Kann mir da jemand einen Trick verraten?
Danke!

Mit freundlichen Grüssen

Blueberry
Mitglied: miniversum
23.10.2008 um 14:53 Uhr
Nehmen wir an der Speicherort der Datei bzw. des Ordners die/den Du komprimieren willst Steht in der Variabeln %in%, dann kansnt Du einfach überprüfen ob das eine Datei ist oder ein Ordner. Das geht dann so:
01.
dir /A-D "%in%"* >NUL 2>NUL && echo Ist eine Datei
Edit:
1. & durch && ersetzt
2. * hinter Variable eingefügt
Bitte warten ..
Mitglied: bastla
23.10.2008 um 15:06 Uhr
@miniversum
Sei doch nicht so geizig mit den "&"

(Im Klartext: Mit "&&" wird der folgende Befehl nur ausgeführt, wenn es beim vorhergehenden Befehl keinen Fehler - oder noch genauer: als Ergebnis des vorigen Befehls den Errorlevel 0 - gab; dies ist bei "dir" dann der Fall, wenn zumindest ein passender Eintrag gefunden wurde).

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
23.10.2008 um 15:10 Uhr
Ups ich werds gleich mal ändern.. Das passiert mir in letzter Zeit viel zu oft das ich sowas vergese irgentwie.. hmmm... Ich werd woll langsam alt ;)
Ichhab übrigens auch noch gade eben hinter der Variabeln ein * hinzugefügt weil es unter Vista sonst nicht funktioniert wie ich grade festgestellt habe.
Bitte warten ..
Mitglied: Blueberry
24.10.2008 um 08:17 Uhr
Hallo Zusammen,

Danke für die Tipps (auch wenn ich schon um 15:00 nach Hause ging und das darum anderst gelöst habe... Und ich habe es auch ein bisschen anderst gelöst . Aber trotzdem danke vielmals!)
So da wäre meine Lösung:

FOR /F "TOKENS=1 DELIMS=" %%A IN ("%~n1") DO SET A=%%A

ist doch auch ne Coole Lösung

<edit>
Miniversum kannst du noch erklären, was das alles macht ???
Damit ich drauskomme was der da genau macht...
Ich danke dir jetzt schon!
<\edit>


Mit freundlichen Grüssen
Blueberry
Bitte warten ..
Mitglied: bastla
24.10.2008 um 08:48 Uhr
Hallo Sandro!

Anmerkungen zu Deiner Lösung:
Da "TOKENS=1" defaultmäßig verwendet wird, kannst Du es einfach weglassen (vor allem auch, da wegen "DELIMS=" ohnehin nur ein Token erzeugt wird).

Um bei im Namen enthaltenen Leerzeichen den gesamten Namen in die Variable %A% zu bekommen, solltest Du
... SET "A=%%A"
verwenden (bzw es Dir überhaupt zur Gewohnheit machen, bei "set"-Anweisungen die Anführungszeichen so zu setzen).

Grüße
bastla
Bitte warten ..
Mitglied: Blueberry
24.10.2008 um 09:08 Uhr
Moin Bastla,

Danke für deine Tipps, sind sehr hilfsreich! Ich werde es mir merken!

Mit freundlichen Grüssen
Blueberry
Bitte warten ..
Mitglied: miniversum
24.10.2008 um 10:05 Uhr
Deine lösung ist allerdings nciht ganz wasserdicht, da sie nicht überprüft ob es ordner oder dateien sind sondern es wird einfach nur alles vor dem letzten Punkt abschneidet. Bei einem ordner mit dem Namen "Mein.Ordner" würde das shcief gehen...

Klar kann ich dir erklären wie meine Lösung funktioniert.
Mit dem Dir-Befehl kannst du mit der Option /a-d nur Dateien anzeigen lassen (/ad wären nur Verzeichnisse). Rufst du also den Befehl so auf:
01.
dir /a-d "meine datei"
würdest Du die Ausgabe nur dieser einen Datei bekommen (und der Errorlevel den Dir zurückliefert wäre 0 weil was gefunden wurde). Wäre "meine Datei" ein Verzeichnis würde nichts angezeigt werden (da ja nur nach ateien gefiltert wird) und dir würde einen errorlevel von 1 zurück liefern. Der * dahinter wird benötigt da im fall eines Verzeichnisses sonst der Inhalt des Verzeichnisses angezeigt werden würde statt des Verzeichnisses selbst.
Als nächstes wird die, in diesem Fall störende, Ausgabe des Dir-Befehls unterdrückt und nur der errorlevel ausgewertet. Die Umleitung der Ausgabe geschieht so:
01.
 >NUL 2>NUL 
Die Abfrage des Errorlevels ist auf zwei Arten möglich.
Einmal indem man darunter ein
01.
If %errorlevel% == 0 (
schreibt oder den Operator && bzw. || verwendet.
Bei einem && wird der darauf folgende Befehl nur ausgeführt wenn der Befehl davon erfolgreich abgearbeitet wurde, also der Errorlevel = 0 ist. Mit || würde der folgende Befehl nur abgearbeitet werden bei Errorlevel 1 oder höher.
Bitte warten ..
Mitglied: Blueberry
24.10.2008 um 10:16 Uhr
Hallo Miniversum,

Danke für deine Erklärung, sie ist sehr ausführlich, so ausführlich das sogar ich das checke . Und danke für die Lösung. Und das wegen meiner Lösung teste ich noch schnell ( Nicht weil ich dir nicht vertraue, sondern einfach aus Prinzipien und weil mein Lehrmeister auch immer sagt ich soll alles testen ).

<edit>
Meine Lösung ist wirklich nicht Wasserdicht!
Aber es geht um Ordner mit dem Namen "Woche XX" XX steht für die Wochenzahl.
<\edit>


Mit freundlichen Grüssen ...ond e gueti Zyt
Blueberry
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...