Dateien mit Sed per Batch umbenennen? Alternative?

rkrause

Mitglied
Habe folgende Dateien, nach diesem Muster:

"sapnote.htm@numm=1320881&vers=0000000000&language=D&sap-language=D"

Dies Dateien sollen per Batch umbenannt werden, wie folgt:

1. Diesen String entfernen: sapnote.htm@numm= (also bis zur Nummer)
2. Diesen String entfernen: &vers=0000000000&language=D&sap-language=D (praktisch alles ab dem &

3. als Dateiendung noch pdf anhängen

Fertig, das Endergebnis sollte dann so aussehen: hinweis_1320881.pdf

Kann man dies realisieren!? Habe ähnliches schon mal mit "SED" gemacht, aber dies in Texten. Um das mit Dateien zu machen, habe ich schon leider vergeblich versucht:(

Suche also ein Tool, mit dem ich komplette String ersetzen kann, ich such kein Tool das mit Gui arbeitet.

mfg
 
Zuletzt bearbeitet:
3. als Dateiendung noch pdf anhängen
Fertig, das Endergebnis sollte dann so aussehen: hinweis_1320881.pdf

Moin,

wie Du die Umbennung per Batch hin bekommst kann ich so aus dem Stand leider nicht sagen ... aber ein kurzer Hinweis:

ist Dir bewusst, dass durch das Umbenennen auf ".pdf" aus Deiner Datei nicht automatisch auch ein PDF-Dokument wird?
Dafür müsstest Du konvertieren :p

Gruß
Klaus
 
das Dokument ist ein PDF-Dokument:)

In Verbindung mit Wget und einem Massendownload entstehen leider diese Cryptischen Dateien. Möchte nun einfach ein Batchscript nutzen mit dem ich das per Klick umbenenne und gut für andere Zwecke brauchen könnte.

Mit Gui-Tools bzw den Totalcommander würde ich das schon mit wenigen Schritten lösen können, suche wie gesagt ein Batchvariante, wenn möglich mit kleinen Tools wie z.B "Sed" aus dem Linuxbereich oder so.
 
Hi.

Muss es denn unbedingt ein Batch Skript sein? Kannst du nicht was anderes installieren? (eine Bash?)

Code:
for /f "tokens=3 delims=&@=" %%a in ("sapnote.htm@numm=1320881&vers=0000000000&language=D&sap-language=D") do set num=%%a
Gruß
 
Versteh leider die Frage jetzt nicht ganz:( Eine Bash würde ich eher Linux bzw Unix zuordenen, bin aber ein leidenschaftlicher Windows-User.

Mache auch schon relativ viel mit Batches und suche mir die entprechenden "Dostools" oder Linuxportierungen zusammen. Schaue mir mal kurz den den Code an, ob ich damit soweit klar komme, da ich For-Schelifen auch hin und wieder verwende.

EDIT: ok, aus den Code könnte ich mir schonmal was zurechtschnitzen. Nur noch ein Loop über alle Dateien einbauen. Danke:)
 
Zuletzt bearbeitet:
aso, extra dafür ein Bash zu installieren, halte ich für unnötig, da ich Batches per USB-Stick hin und wieder auch auf anderen System nutzen möchte.

Gibs den Linuxbefehle die bequem String aus Dateien erkennen und ersetzen können, da ich auch unter anderem Linuxbefehle (Portierung für Win32) auch schon unter Windows nutze; zb Sed oder grep?
 
aso, extra dafür ein Bash zu installieren, halte ich für unnötig, da ich Batches per USB-Stick hin und wieder auch auf anderen System nutzen möchte.

Gibs den Linuxbefehle die bequem String aus Dateien erkennen und ersetzen können, da ich auch unter anderem Linuxbefehle (Portierung für Win32) auch schon unter Windows nutze; zb Sed oder grep?
Ja, mit sed:
Code:
echo "sapnote.htm@numm=1320881&vers=0000000000&language=D&sap-language=D" | sed -e <pattern>
Gruß

PS: Du könntest auch mmv (http://ring.u-toyama.ac.jp/archives/pc/gnu-win32/release/mmv/) benutzen (siehe http://linux.die.net/man/1/mmv)
 
Zuletzt bearbeitet:
Code:
@echo off
rem Config
set source_list=_test.txt
set suchkriterium=sapnote

:start
rem datei auf aktuellem stand bringen (durch löschen der datei)
if exist "%source_list%" del %source_list%
rem bestimmte dateien per suchkriterium einlesen und in datei stellen
dir /b "*.*" |find "%suchkriterium%" >>%source_list%

:scan_files
set source_file=
for /f "delims=" %%i in ('type "%source_list%"') do set source_file=%%i
if "%source_file%"=="" goto exit
for /f "tokens=3 delims=&@=" %%a in ("%source_file%") do set num=%%a

:rename_file
ren "%source_file%" hinweis_%num%.pdf
goto start

:exit
rem irgendwas machen
exit

Batch ist fertig und läuft erstmal:) Feil da irgendwann mal ein bischen rum.

Vorschläge was man noch verbessern könnte!?

Danke für die hilfreichen Tipps:D
 
Hi.

Was ich auf jeden Fall versuchen würde zu vermeiden, ist irgendwelche Dateien anzulegen.

Und warum generierst du die Dateiliste bei jedem Durchlauf nochmal neu?

Code:
for %%i in (*sapnote.htm*) do (
  for /f "tokens=3 delims=&@=" %%a in ("%%i") do ren "%%i" hinweis_%%a.pdf
)
Gruß
 
Zuletzt bearbeitet:
Zurück