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

Batch oder VBS zum kürzen des ersten Teils einer Serie von Dateinamen von Textdateien und Convertierung in PDF Dateien

Frage Entwicklung Batch & Shell

Mitglied: RainerSp

RainerSp (Level 1) - Jetzt verbinden

09.02.2013 um 12:12 Uhr, 2365 Aufrufe, 13 Kommentare

Ich bin Frischling und habe keine Ahnung von Programmierung - Bitte um Verständnis

Hi Community,
Ich bin am verzweifeln, denn ich find nach tagelangem Suchen im Netz keine brauchbare Lösung
für mein Problem. Ihr seit meine letzte Hoffnung!
Ich suche nach einem VBscript oder einer Batchdatei die mir das mühsame per Hand Umbenennen einer Reihe
von txt Dateien und anschließende Convertieren in PDF Dateien abnimmt.
Wenn das mit der PDF Convcertierung schwierig ist, würde ich mich schon mit dem ersten Teil meiner
Aufgaben-Anforderung begnügen.
Das script soll:
1. von den tägl. 5-20 Textdateien die nach folgenden Schema generiert werden -
txt00001.abcdef_ghijkl.txt
txt00002.jklmn_rstuvwxyz.txt usw.
die ersten 9 Zeichen aller Dateinamen incl. dot (also txt00001.) löschen
s.d. nur noch abcdef_ghijkl.txt bleibt.
Die Zeichenzahl der Dateien variiert von Datei zu Datei.
2. Wenn möglich alle umbenannten *.txt in *.pdf
convertieren.
3. Alle *.*.txt Dateien unter 1. befinden sich im
Ordner z.B. C:\Test
Hat jemand von Euch Sezialisten eine Lösung für mich???
Gruß Rainer
Mitglied: bastla
09.02.2013 um 13:18 Uhr
Hallo RainerSp und willkommen im Forum!

Das Ubenennen ist, wenn das Namensschema wie beschrieben einheitlich ist, keine große Sache:
01.
@echo off & setlocal 
02.
set "Basis=C:\Test" 
03.
set "Schema=*.*_*.txt" 
04.
 
05.
for %%i in ("%Basis%\%Schema%") do for /f "tokens=1* delims=." %%a in ("%%~ni") do @echo ren "%%i" "%%b%%~xi" 
06.
pause
Wegen des "echo" vor dem "ren" wird die Umbenennung nur simuliert, indem der entsprechende Befehl angezeigt wird - wenn's passt, einfach dieses "echo" entfernen.

Grüße
bastla
Bitte warten ..
Mitglied: RainerSp
09.02.2013 um 14:00 Uhr
Hi bastla,
ich bin begeistert!!! Das funktioniert richtig gut. Tja, wenn man weiß wie es geht.
Vielen Dank!
Wenn es nun noch mit dem 2.Teil der Aufgabe klappen würde, also der Konvertierung
der umgewandelten abc_def.txt Dateien in abc_def.pdf Dateien per Batch oder Script
wäre ich total happy.
Viele Grüße Rainer
Bitte warten ..
Mitglied: Biber
09.02.2013 um 15:25 Uhr
[OT]
Zitat von bastla:
Das Ubenennen ist, wenn das Namensschema wie beschrieben...
Set /a rgc+=1
#842
Wenigstens mal eine neue Variante

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: bastla
09.02.2013, aktualisiert um 20:04 Uhr
[OT 2] @ Biber
Dass ich das noch erleben musste ...

Grüße
bastla
[/OT 2]
Bitte warten ..
Mitglied: bastla
11.02.2013, aktualisiert um 15:48 Uhr
Hallo RainerSp!

Für die Konvertierung habe ich (neben mehreren kostenpflichtigen Programmen) bei der Suche (mit den Stichwörtern "text to pdf +commandline") "text2pdf" von einem Anbieter mit dem interessanten Namen "AdultPDF" gefunden - falls Du das verwenden wolltest (ich habe es nur kurz in einer Testumgebung gestartet), wäre die Zeile 5 abzuändern auf
01.
for %%i in ("%Basis%\%Schema%") do for /f "tokens=1* delims=." %%a in ("%%~ni") do ( 
02.
    "%programfiles%\AdultPDF\Text To PDF\TxtToPDF.exe" "%%i" "%%~dpi%%b.pdf" 
03.
    ren "%%i" "%%b%%~xi" 
04.
)

Grüße
bastla
Bitte warten ..
Mitglied: RainerSp
12.02.2013 um 23:37 Uhr
Hallo bastla,
Du bist ein Genie!!!! Das ist ja sowas von genial.
Ich habe mich bisher immer mit PDF-Umgehungsprogrammen,
die nur Zeit kosten geplagt...aber so ist das wunderbar.
Einzige Hürde - die DOS Box fordert nach Start der Batch
eine Eingabebestätigung. Wie kann man das umgehen?
Das sortieren der Dateien in entsprechende Ordner bekomme
ich sicher alleine hin.
Nochmals vielen vielen Dank!!!!
Bitte warten ..
Mitglied: bastla
12.02.2013 um 23:44 Uhr
Hallo RainerSp!
die DOS Box fordert nach Start der Batch eine Eingabebestätigung
Falls damit nicht die "pause" in Zeile 6 (war ohnehin nur für die Testphase gedacht) gemeint ist, solltest Du das noch näher beschreiben ...
Das sortieren der Dateien in entsprechende Ordner bekomme ich sicher alleine hin.
Das ließe sich vermutlich auch gleich in die Schleife einbauen - mach mal (und bei Fragen einfach fragen ).

Grüße
bastla
Bitte warten ..
Mitglied: RainerSp
13.02.2013 um 19:56 Uhr
Hallo bastla,
eigentlich läuft das vbScript, wo ich Deine Batch eingebaut habe recht flüssig. Aber mit jeder Verbesserung wächst auch der Anspruch, die Sache noch etwas perfekter zu gestalten.
Gelöst für mich hast Du meine Probleme mit dem Kürzen der *.*.txt Dateien und die Einbindung dieses genialen und
wirkllich schnell konvertierden PDF Tools. Die konvertierten PDF Dateien landen neben den veränderten *.txt Dateien im selben Ordner. Ich habe jetzt eine weitere Batchdatei in das vbscript gelegt, welche die PDF Dateien in einen anderen Ordner verschiebt und danach die nicht mehr benötigten *.txt Dateien löscht (vorher aber noch in einem neuen Ordner mit Zeit- und Datumsstempel eine Sicherungskopie anlegt). Das klappt alles bestens. Vor Löschung und Fertigung der Sicherungskopie wird der Ordner mit den *.pdf Dateien nochmals zur Kontrolle geöffnet und eine MsBox kommt mit der Frage ob alles oK und der Löschvorgang starten kann.Wie gesagt, klappt alles aber es gibt kleine "Hackser".
Warum kann ich nicht das ganze vbscript im Hintergrund ablaufen lassen. Es öffnet sich immer das DOS promt Fenster.Wird eine Verknüpfung des vbscripts erstellt und dann unter Einstellungen Fenster minimiert eingestellt öffnet sich die DOS Box wenigstens nur kurz. Geht das anders? Das zweite klitzekleine Problem - bei der Kontrolle vor dem Löschen und der Sicherung der *.txt Dateien soll sich nochmal zur KOntrolle der Ordner mit den erstellten *.pdf dateien öffnen. Es ist mir gelungen die sich dann im scriptverlauf öffnende MsBox so anzulegen, daß sie immer im Vordergrund bleibt. Ich habe aber keine Idee, wie ich den geööfneten Odner über das vbscipt wieder schließen kann.Da er nicht im Vordergrund ist, klappt es auch nicht ohne weiteres mit sendkeys Strg und F4, Es geht, wenn ich im script 3x nacheinander Strg und F4 schreibe. Das ist aber doch nicht professionel!!! Geht das auch anders?? Nochmals, mein script funktioniert aber vielleicht gehts noch etwas besser!?
Herzliche Grüße RainerSp
Bitte warten ..
Mitglied: bastla
13.02.2013 um 21:11 Uhr
Hallo RainerSp!

Einen Batch "unsichtbar" ausführen kannst Du mit
Shell.Run "Batchdatei", 0
Um ein Ordnerfenster zu öffnen und auch wieder schließen zu können, könntest Du ev einen alternativen Dateimanager (wie etwa "Explorer++") starten und wieder beenden (Beispielcode zB hier) - mit einem gewöhnlichen Explorer-Fenster dürfte das etwas schwierig werden ...

Grüße
bastla
Bitte warten ..
Mitglied: RainerSp
14.02.2013 um 18:20 Uhr
Hallo bastla,
Shell.run "Batchdatei", 0 hat nicht funktioniert aber
Shell.run "Batchdatei",0,True
darunter läuft alles schön im Hintergrund und kein DOS Fenster blinkt auf.
Ich habe in den Tagen viel gelernt, wenn auch Deine gebastelte Schleife für mich
ein Buch mit 7 Siegel ist. Hauptsache es funktioniert und das macht es jetzt
wunderbar. Nochmals 1000 Dank für Deine immer prompte und schnelle Hilfe.
Wenn ich wieder Probleme oder eine Idee für ein neues Script brauche, weiß
ich, an wen ich mich wenden muss.
Viele Grüße RainerSp
Bitte warten ..
Mitglied: bastla
14.02.2013, aktualisiert um 18:48 Uhr
Hallo RainerSp!
wenn auch Deine gebastelte Schleife für mich ein Buch mit 7 Siegel ist.
Soll sie aber nicht bleiben - daher kurz zum Ablauf:
for %%i in ("%Basis%\%Schema%") do
liefert in der Schleifenvariablen "%%i" nacheinander die zu "%Basis%\%Schema%" (also im Beispiel "C:\Test\*.*_*.txt") passenden Dateien (mit komplettem Pfad).
for /f "tokens=1* delims=." %%a in ("%%~ni") do (
zerlegt für jede Datei den Namen ("%%~ni") ohne Dateityp (als Beispiel "txt00002.jklmn_rstuvwxyz") anhand des Trennzeichens "." und zwar nur bei dessen erstem Auftreten (wegen "tokens=1*" entstehen so nur 2 Teile - in "%%a" alles vor dem ersten Punkt, in "%%b" alles danach; auch, wenn hier noch weitere Punkte enthalten wären, würde wegen des "*" nicht weiter getrennt). Es enthält daher im Beispiel "%%a" den Teil "txt00002" und in "%%b" steht mit "jklmn_rstuvwxyz" der gewünschte neue (gekürzte) Name.
"%programfiles%\AdultPDF\Text To PDF\TxtToPDF.exe" "%%i" "%%~dpi%%b.pdf"
startet die "TxtToPDF.exe" und übergibt als ersten Parameter (= Quelle) die Ausgangsdatei in "%%i" (das wäre hier "C:\Test\txt00002.jklmn_rstuvwxyz.txt") und als zweiten Parameter (= Ziel) Laufwerk und Pfad der Ausgangsdatei ("%%~dpi" liefert "C:\Test\" mit abschließendem "\"), den neuen Namen lt "%%b" (also "jklmn_rstuvwxyz") und den Dateityp ".pdf"
ren "%%i" "%%b%%~xi"
schließelich sorgt für das Umbenennen der Ausgangsdatei "%%i" auf den neuen Namen "%%b" und behält den ursprünglichen Dateityp "%%~xi" (= ".txt") bei - hier könnte zwar ".txt" auch unmittelbar angegeben werden, mit der variablen Schreibweise bleibt der Batch aber flexibler und als ev Zusatznutzen bleibt auch zB Groß-/Kleinschreibung des Dateityps wie im Original.

Nachlesen kannst Du die Bedeutung von zB "%%~ni" in der Online-Hilfe mit "for /?" (ziemlich gegen Ende der Ausgabe; dass im Batch für Schleifenvariablen 2 Prozentzeichen verwendet werden müssen, wusstest Du vielleicht ohnehin schon).

Grüße
bastla
Bitte warten ..
Mitglied: RainerSp
19.02.2013 um 17:32 Uhr
Hallo bastla,
vielen Dank für Deine erklärenden Worte. Werde das mal in einer ruhigen
Stunde durchdenken und nachvollziehen.
Habe aktuell aber ein anderes Problemchen.
Gibt es ein Batchbefehl zum maximieren eines vonher minimierten
Win Fensters. Mit nircmd kann man ein minimiertes Fenster schließen
aber um ein bestimmtes Fenster was klein abgelegt wurde wieder zu maximieren finde
ich nichts. Vielleicht hast Du eine Idee??
Gruß Rainer
Bitte warten ..
Mitglied: RainerSp
20.02.2013 um 12:59 Uhr
Alles bestens, habe selber bei nircmd die Lösung für
das Maximieren eines Fensters gefunden.
RainerSp
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Entwicklung
gelöst Mit Batch,VBS,Powershell Windows einrichten (1)

Frage von Justin98 zum Thema Entwicklung ...

Batch & Shell
gelöst Mehrere PDF-Dateien per Batch zusammenfügen (1)

Frage von Grimmli zum Thema Batch & Shell ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Windows 7
gelöst Batch-Skript oder VBS Skript zum Sichern von Office Vorlagen (2)

Frage von Ceejaay zum Thema Windows 7 ...

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