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

Umbenennen von TXT Dateien aus Inhalt von dieser TXT Datei

Frage Entwicklung Batch & Shell

Mitglied: Halperimre

Halperimre (Level 1) - Jetzt verbinden

23.10.2008, aktualisiert 24.10.2008, 3670 Aufrufe, 5 Kommentare

Sehr geehrtes Administrator-Team!
Sehr geehrte User!

Da ich neu hier bin weiß ich nicht so recht ob ich hier im richtigen Unterforum gelandet bin!
Ich benutze Tekla Structures was ein leistungsstarkes Programm für 3D-Konstruktion ist.
Mit diesem Programm kann ich .nc Daten erzeugen die ich dann zur Weiterverarbeitung meiner CNC-Maschine umbenennen muß!
Das Problem ist das die CNC-Maschine über ein anderes Programm die Daten eingegeben werden welche .nc Dateien verwenden.
Dieses Programm zeigt mir aber nicht Stückzahl und Blechstärke und ich muß deshalb in langen Listen nach Dateiname suchen damit ich weiß wieviel Stück und welche Blechstärke ich benötige.

Meine Datei heißt: VS_8.nc
und der Inhalt ist folgender:
ST
** VS_8.nc
239/2008
11
VS/8
VS/8
S235JRG2
12
FL25*250
B
354.23
250.00
25.00
25.00
25.00
0.00
200.000
2.367
-4.768
-0.004
0.000
0.000




AK
v 0.00u 0.00 0.00 0.00 0.00 0.00 0.00
354.21 0.00 0.00 0.00 0.00 0.00 0.00
354.23 250.00 0.00 0.00 0.00 0.00 0.00
314.23 250.00 0.00 0.00 0.00 0.00 0.00
16.18 193.99 0.00 0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00 0.00 0.00 0.00
BO
v 53.71s 50.16 29.00
v 60.69s 129.86 29.00
EN

Nun möchte ich das meine Datei VS_8_12stk_25.00mm.nc heißt.

Der Wert 12 kommt aus Zeile 8 und es müßte noch Stk hinzugefügt werden
Der Wert 25.00 kommt aus Zeile 13 und es müßte noch mm hinzugefügt werden.

Da ich Tekla nicht dazubewegen kann das es stückzahl und blechstärke hinzufügt zum Dateinamen, dachte ich mir das dies vielleicht über ein Batchprogramm bewerkstelligt werden könnte!
Da ich zeitweise über 100 Dateien zu bearbeiten habe ist dies sehr mühsam!


Vielen Dank im voraus für eure Bemühungen
Mitglied: bastla
23.10.2008 um 20:09 Uhr
Hallo sehr geehrter Halperimre und willkommen im völlig richtigen Zweig des Forums!

Der folgende Batch sollte, zum Testen, die Umbenenn-Vorgänge nur anzeigen - wenn das Ergebnis vernünftig aussieht, das "echo" (Zeile 6) vor dem "ren" entfernen, um tatsächlich die Dateinamen ändern zu lassen:
01.
@echo off & setlocal enabledelayedexpansion 
02.
pushd "D:\NC-Files" 
03.
for /f "delims=" %%i in ('dir /b /a-d *.nc') do ( 
04.
    set M= 
05.
    for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%%i"^|findstr /b "8: 13:"') do set "M=!M!#%%b" 
06.
    for /f "tokens=1-2 delims=#" %%a in ("!M!") do echo ren "%%i" "%%~ni_%%astk_%%bmm%%~xi" 
07.
08.
popd
Noch zwei Hinweise:
  • Sollte im Ordner- oder Dateinamen ein "!" enthalten sein, müsste eine andere Vorgangsweise gewählt werden.
  • Falls in den relevanten Zeilen 8 und 13 der Datei das Zeichen "#" vorkommen könnte, müsste dieses Zeichen in den Batch-Zeilen 5 und 6 durch ein anderes Zeichen, etwa "$", ersetzt werden.

Grüße
bastla

[Edit] Trennzeichen auf "#" geändert [/Edit]
[Edit2] Schleife für Dateien auf "for /f" geändert, um mehrfaches Umbenennen zu vermeiden [/Edit2]
Bitte warten ..
Mitglied: Halperimre
24.10.2008 um 07:15 Uhr
Sehr geehrter Herr Bastla!

Ihre Batch Datei funktioniert einwandfrei!
Sie haben mir dadurch viele Stunden Arbeit genommen!
Da die Dateinamen immer gleich aufgebaut sind z.B. XX_1234.nc sind Ihre zwei Hinweise nicht relevant für mich!
Ich weiß nicht wie ich mich bei Ihnen bedanken soll, aber trotzdem vielen tausend Dank!

Mit freundlichen Grüßen Halperimre
Bitte warten ..
Mitglied: Masterofdwc
11.02.2009 um 09:59 Uhr
Hallo,

wie müsste der Code aussehen, wenn ich nichts an den Dateinamen anhängen will, sondern nur einen gewissen teil herausfiltern will.

Zu Verdeutlichung:
In meiner Datei (Die immer anders heißt) steht in Zeile 1:
B0012300339709022009

für mich sind die 4 Zahlen nach der 8ten Stelle wichtig. Also in dem Fall "3397"

Das Skript soll mir jetzt also die Datei, in der diese Zeile steht nach "3397.txt" umbenennen.

Komplikation dabei ist noch, dass mehrere Dateien in diesem verzeichnis sind, die alle auf diese Art und Weise abgearbeitet werden müssen.

Hab schon versucht im obigen Code ein %a:~-12,4% mit rein zu bringen. Aber ich kriegs nicht hin.

Für eine kleine HIlfestellung wäre ich dankbar.
Bitte warten ..
Mitglied: bastla
11.02.2009 um 19:58 Uhr
Hallo Masterofdwc!

Eine Stringzerlegung ist leider mit Laufvariablen einer "for"-Schleife nicht möglich - daher eher so:
01.
@echo off & setlocal enabledelayedexpansion 
02.
pushd "D:\NC-Files" 
03.
for /f "delims=" %%i in ('dir /b /a-d *.nc') do ( 
04.
    set /p Zeile=<"%%i" 
05.
    set "Wert=!Zeile:~8,4! 
06.
    echo !Wert! 
07.
08.
popd
Damit der Variableninhalt (= erste Zeile der jeweiligen Datei) von %Zeile% innerhalb der "for"-Schleife auch wieder gelesen und verwendet werden kann, muss "delayedExpansion" (oder ein Unterprogramm) verwendet werden - im Beispiel oben ist es Ersteres, wodurch sich die Schreibweise von %Zeile% auf !Zeile! verändert.

Grüße
bastla
Bitte warten ..
Mitglied: Masterofdwc
09.03.2009 um 07:39 Uhr
Da wär ich nie drauf gekommen.

Danke sehr. Funktioniert.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

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

Ähnliche Inhalte
Batch & Shell
gelöst 2 große TXT Dateien vergleichen und Unterschiede in andere Datei schreiben (6)

Frage von sid.pdm zum Thema Batch & Shell ...

Batch & Shell
gelöst Inhalt aus ca. 106.000 TXT Dateien zu einer einzigen Textdatei "mergen" mit Abstandseinbau (1)

Frage von lukeskywalker501 zum Thema Batch & Shell ...

Batch & Shell
gelöst Powershell: Variablen aus .txt Dateien heraus ausgeben (5)

Frage von Tobiased zum Thema Batch & Shell ...

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 ...