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

Fünftletztes Zeichen löschen wenn es ein Underline ist

Frage Entwicklung Batch & Shell

Mitglied: giadsc

giadsc (Level 1) - Jetzt verbinden

23.12.2013 um 11:37 Uhr, 2344 Aufrufe, 10 Kommentare, 1 Danke

Hallo zusammen,

ich stehe wieder mal an... diese FOR Schleiffe werde ich wohl nie in meinem Leben kapieren...

Folgendes Problem habe ich:
In einem Ordner habe ich unterschiedliche Dateien mit der Endung .txt, .dxf oder .pdf
nun soll bei allen Dateien die *_.txt oder *_.dxf oder *_.pdf aufhören das _ entfernt werden.
bei allen anderen Dateien soll nichts unternommen werden.

Bsp: A1234_5678_00_.txt soll zu A1234_5678_00.txt werden
B5236_6988_01.txt bleibt
Z8974_5844_06B.txt bleibt auch

Ich hoffe so kurz vor Weihnachten ist noch jemand hier der mich hier unterstützen kann.
Vielen Dank schon jetzt

Gruss
Mitglied: colinardo
23.12.2013, aktualisiert um 12:55 Uhr
Hallo giadsc,
kannst du z.B. so machen:
In Zeile 6 ist dem Rename-Vorgang noch ein echo vorangestellt (zum testen), dies musst du rausnehmen wenn die Dateien tatsächlich umbenannt werden sollen.
01.
@echo off & setlocal enabledelayedexpansion 
02.
set suchordner="c:\temp\source" 
03.
for %%a in (%suchordner%\*.*) DO @( 
04.
  set basename=%%~na 
05.
  if "!basename:~-1!" == "_" ( 
06.
	echo rename "%%~a" "!basename:~0,-1!%%~xa" 
07.
08.
)
p.s. Und häng dich nicht "for" dem Fest in die Schleife
Grüße Uwe
Bitte warten ..
Mitglied: giadsc
23.12.2013 um 13:01 Uhr
Hallo Uwe,
Vielen Dank für deine Hilfe.
Leider wird nichts umbenannt, muss ich noch etwas beachten wenn ich es im batch ausführen will? die doppelten % sind ja schon drin...
Hast Du noch eine Idee?

ist die Zeile @echo off & setlocal enabledelayedexpansion notwendig?

Liebe Grüsse,
der am FORzweifelnde...
Bitte warten ..
Mitglied: colinardo
23.12.2013, aktualisiert um 13:17 Uhr
Zitat von giadsc:
Leider wird nichts umbenannt, muss ich noch etwas beachten wenn ich es im batch ausführen will? die doppelten % sind ja schon
drin...
Hast Du noch eine Idee?
gelesen ?
In Zeile 6 ist dem Rename-Vorgang noch ein echo vorangestellt (zum testen), dies musst du rausnehmen wenn die Dateien tatsächlich umbenannt werden sollen.

ist die Zeile @echo off & setlocal enabledelayedexpansion notwendig?
ja
Bitte warten ..
Mitglied: giadsc
23.12.2013 um 13:04 Uhr
jep, habe echo entfernt.
Bitte warten ..
Mitglied: colinardo
23.12.2013, aktualisiert um 13:09 Uhr
den Ordner in Zeile 2 angepasst ? poste doch bitte deinen angepassten Code(und bitte Tags verwenden), hier geht es nämlich einwandfrei

Grüße Uwe
Bitte warten ..
Mitglied: giadsc
23.12.2013 um 13:18 Uhr
Hallo Uwe,

sieht bei mir so aus:
<code>
@echo on & setlocal enabledelayedexpansion
set pe_exp=C:\ptc_temp\export
for %%a in (%pe_exp%\*.*) DO @(
set basename=%%~na
if "!basename:~-1!" == "_" (
rename "%%~a" "!basename:~0,-1!%%~xa"
)
)
<\code>
Bitte warten ..
Mitglied: giadsc
23.12.2013 um 13:31 Uhr
habs. habe deinen code nicht via "Quelltext" kopiert.
und schon gehts, sorry für die Umstände.

können die files nun auch noch gleich in einen Unterordner verschoben werden?
z.B.
A1234_5678_00.txt in A1234
B5236_6988_01.txt in B5236
Z8974_5844_06B.txt in Z8974
8888_7777B in 8888

das währe der Oberhammer...
Bitte warten ..
Mitglied: colinardo
23.12.2013, aktualisiert um 13:50 Uhr
Zitat von giadsc:
können die files nun auch noch gleich in einen Unterordner verschoben werden?
z.B.
A1234_5678_00.txt in A1234
B5236_6988_01.txt in B5236
Z8974_5844_06B.txt in Z8974
8888_7777B in 8888

das währe der Oberhammer...
Wenn der Trennstrich "_" das Trennmerkmal für den Ordnernamen ist:
01.
@echo off & setlocal enabledelayedexpansion 
02.
set pe_exp=C:\ptc_temp\export 
03.
for %%a in (%pe_exp%\*.*) DO @( 
04.
  set basename=%%~na 
05.
  for /f "tokens=1 delims=_" %%b IN ("!basename!") DO set newfolder=%pe_exp%\%%b 
06.
  if "!basename:~-1!" == "_" ( 
07.
	set newname=!basename:~0,-1!%%~xa 
08.
	ren "%%~a" "!newname!" 
09.
	if not exist "!newfolder!" md "!newfolder!" 
10.
	move "%pe_exp%\!newname!" "!newfolder!" 
11.
12.
)
Grüße Uwe

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und den(die) entsprechenden Kommentar(e) welche die Lösung waren, markieren. Merci.
Bitte warten ..
Mitglied: giadsc
23.12.2013 um 13:55 Uhr
Einfach nur genial was man so alles machen könnte, wenn man das FOR-Ding nur kapieren würde..

Vielen Dank Uwe, hat geklappt!
Wünsche Dir frohe Festtage.

Grüsse
Daniel
Bitte warten ..
Mitglied: colinardo
23.12.2013 um 14:14 Uhr
Zitat von giadsc:

Einfach nur genial was man so alles machen könnte, wenn man das FOR-Ding nur kapieren würde..
Dann empfehle ich mal folgendes Tutorial:
http://www.administrator.de/wissen/tutorial-zur-for-schleife-155681.htm ...

Wünsche Dir frohe Festtage.
Ebenso, und guten Rutsch.

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Voice over IP
Freeswitch Sammelrufnummer besetzt zeichen (1)

Frage von frephisten zum Thema Voice over IP ...

Batch & Shell
gelöst Powershell - Pfadlänge mit mehr als 260 Zeichen (11)

Frage von Bugger zum Thema Batch & Shell ...

Batch & Shell
Powershell - Zeilen in einer csv löschen bis (7)

Frage von Franz-Josef-II zum Thema Batch & Shell ...

Microsoft Office
Outlook 2013 Kontaktname enthält japanische Zeichen

Frage von xbast1x zum Thema Microsoft Office ...

Neue Wissensbeiträge
Linux Netzwerk

Ping und das einstellbare Bytepattern

(1)

Erfahrungsbericht von LordGurke zum Thema Linux Netzwerk ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(3)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
SAN, NAS, DAS
MSA 2050 RAID Konfig (30)

Frage von Leo-le zum Thema SAN, NAS, DAS ...

Microsoft Office
Office Druck fehler (18)

Frage von DaistwasimBusch zum Thema Microsoft Office ...

Festplatten, SSD, Raid
Uninitialisierte Festplatte - Daten retten (11)

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

Netzwerkmanagement
Windows Server 2008 R2: "netsh reset" nicht verfügbar? (11)

Frage von RickTucker zum Thema Netzwerkmanagement ...