Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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

SaveAs Filenamen via 2 Listen steuern (Batch)?

Frage Entwicklung Batch & Shell

Mitglied: DJPeti

DJPeti (Level 1) - Jetzt verbinden

02.10.2012, aktualisiert 15:26 Uhr, 1962 Aufrufe, 5 Kommentare

Hi
Ich bin so ziemlich neu hier und habe dank diesem "Forum" schon einiges über Batch und vermutlich auch vb gelernt beim Durchstöbern. Danke erstemals Allen, die hier so fleissig Fragen beantworten.
Bisher konnte ich meine "Probleme" lösen mit Excel VB und Batch.
Nun komme ich hier nicht mehr weiter:

Folgendes Problem:

Ich habe mehrere Files, deren Inhalt ich übernehmen will, der Filename soll jedoch geändert werden (und das via Save As):

Beispiel:

"Text_164503.txt" soll zu "Text_001.txt" werden.
"Text_168987.txt" soll zu "Text_002.txt" werden

Da hab ich mir gedacht, ich könnte das mit Hilfe eines Batch Scriptes und 2 Textlisten lösen:

In Liste 1 stehen die Namen der bestehenden Files
1.txt:

1056874
6549879
6548542
...

IN Liste 2 stehen die neuen Namen:
2.txt:

001
002
003
...


Was ich jetzt möchte ist, dass ich aus der ersten Liste auslese, welche Files kopiert werden. Die 2te Liste sollten die neuen Filenamen sein, die genau jeweils dem richtigen File in der ersten Liste zugestellt werden:

1056874 soll also zu 001 werden

6549879 zu 002 etc.



Hier meine Überlegung (die Falsch ist und leider nicht wunschgemäss funktioniert):

_______________________________________________________________
01.
@echo off 
02.
:1 
03.
 
04.
echo Files will be placed in C:\Temp\... 
05.
 
06.
set /p folder=Please enter folder for new Files C:\temp\: 
07.
 
08.
md c:\temp\%folder% 
09.
 
10.
 
11.
for /f %%i in (1.txt) do call :arbeiten %%i 
12.
 
13.
:arbeiten 
14.
 
15.
for /f %%a in (2.txt) do copy c:\Temp\Texte\Text_%%i.txt c:\Temp\%folder%\Text_%%i.def_%%a.txt 
16.
pause 
17.
 
_______________________________________________________________

Irgendwie klappt das Ganze, allerdings werden alle Files mehrmals wieder überschrieben und man hat keine chance um das zu unterbrechen. Somit habe ich ALLE neuen Namen bzw. txt Files, jedoch steht überall der Inhalt vom ersten File drin.

Hat jemand eine Idee wie das klappen könnte?
Das Ganze kann auch via Backup, Rename und Rückkopie gemacht werden. Allerdings bring ich es nicht fertig, das File X genau Name Y bekommt, was genau das Entscheidende ist.

Vielen Dank.

mfg Peti

[Edit Biber] Codeformatierung nachgezogen, weil es gar nicht lesbar war. [/Edit]
Mitglied: Biber
02.10.2012 um 15:32 Uhr
Moin DJPeti,

willkommen im Forum.

Mit zwei spiralförmig umeinander kreisenden Listen machst du dir die Arbeit unnötig schwer.

Prüfe erstmal, ob eine der folgenden varianten für deine Anforderung machbar ist:
  • entweder EINE Textdatei, die je Zeile <<"Altername"; "NeuerName">> enthält
  • oder EINE Textdatei, die nur <<"AlterName">> je Zeile enthält und die Nummerierung erfolgt fortlaufend ("001", "002" etc)

Grüße
Biber
Bitte warten ..
Mitglied: bastla
02.10.2012, aktualisiert um 18:13 Uhr
... sehe ich grundsätzlich auch so - obwohl frei nach Friemler:
01.
@echo off & setlocal 
02.
<2.txt (for /f "delims=" %%i in (1.txt) do ( 
03.
    set "Alt=%%i" 
04.
    set /p "Neu=" 
05.
    setlocal enabledelayedexpansion 
06.
    echo ren "!Alt!.txt" "!Neu!.txt" 
07.
    endlocal 
08.
))
[Edit] So angepasst, dass sowohl in "1.txt" als auch in "2.txt" Namen mit "!" enthalten sein dürfen. [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: Biber
02.10.2012, aktualisiert um 18:37 Uhr
Moin bastla,

ja nee... sehr hybsch und ja durchaus robust.

Aber:
WTF sollte jemand im realen Leben so arbeiten wollen oder müssen, dass links eine 58119-Zeilen-Plaintext-Datei mit einem "AltNamen" pro Zeile rumliegt und dieser Jemand in eine neue zweite Plaintext-Datei (auf einem anderen Laufwerk vielleicht?) 58119 Zeilen mit "NeuNamen" eintippselt?

Das würde bei normal belastbaren Individuen in Zeile 194 schiefgehen - bei mir wäre spätestens in Zeile 23 Schicht.

Oder wenn dich in 2 Monaten der Cheffe anmailt mit "Du hast doch neulich die Datei "Heinz.txt" umbenannt - wie heisst die Datei denn heute?" - lässt du dich dann von deiner Outlook-Abwesenheitsassistentin verleugnen?

Ich würde nicht alles so ungestüm umsetzen, was nicht explizit gegen geltende Naturgesetze verstösst... oder zumindest einen Plan B ins Gespräch bringen.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
02.10.2012, aktualisiert um 22:06 Uhr
Hallo Biber!

Sehe ich weiterhin auch so (aber ein wenig Spielen muss manchmal sein ) - wobei nach einer Umbenennung auf laufende Nummer der ursprüngliche Dateiname wohl kein Thema mehr sein dürfte; wenn das also wirklich so geplant ist, wäre die Datei "2.txt" nur eine Krücke - und die braucht's dann ja gar nicht:
01.
@echo off & setlocal 
02.
set /a Nr=1001 
03.
 
04.
for /f "delims=" %%i in (1.txt) do ( 
05.
    set "Alt=%%i" 
06.
    setlocal enabledelayedexpansion 
07.
    echo ren "%Alt%.txt" !Nr:~-3!.txt 
08.
    endlocal 
09.
    set /a Nr+=1 
10.
)
Grüße
bastla
Bitte warten ..
Mitglied: DJPeti
03.10.2012 um 10:05 Uhr
Danke euch!

Funktioniert einwandfrei.

Habe mittlerweile selber nochmals bisschen ausprobiert und sowas hier gebastelt:

Inhalt 1.txt (aus Excel mit vb exportiert):

21010001_1400002 1400002 1400002_21010001
21010002_1400003 1400003 1400003_21010002
21010003_1400004 1400004 1400004_21010003

01.
@echo off 
02.
 
03.
set /p folder=Please enter folder for new Files C:\temp\: 
04.
 
05.
md c:\temp\%folder% 
06.
 
07.
 
08.
FOR /F "tokens=1 delims=_ " %%a IN (1.txt) do for /f "tokens=2 delims= " %%b IN (1.txt) do if not exist C:\Temp\%folder%\%%b_%%a.txt copy C:\Temp\%%a.txt c:\Temp\%folder%\%%b_%%a.txt 
09.
pause 
10.
 
11.
FOR /F "tokens=3 delims= " %%x IN (1.txt) do copy C:\temp\%folder%\%%x.txt C:\Temp 
12.
 
13.
 
14.
for /F "delims=" %%i in ('dir /b /a-D *.txt') do (for /F "delims=_" %%m in ('echo %%i') do ren "%%i" "%%m%%~xi") 
15.
pause 
16.
 
17.
 
Alle files werden erstellt (auch die unnötigen, die ich irgendwie mit dieser Schleife nicht umgehen kann). Dann werden die "richtigen" aussortiert und vom Temporären Ordner in den Überordner kopiert und dann wird der Name wieder gekürzt.

Funktioniert einigermassen, aber ist unnötig lang.
Bitte warten ..
Ähnliche Inhalte
Windows Tools
gelöst Scan BarCode 2 Filename (8)

Frage von CADastrophe zum Thema Windows Tools ...

Batch & Shell
gelöst Datei-Endungen, Listen und Sortierung (Batch) (5)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
Anhand des Filename in Verzeichnis kopieren (3)

Frage von rudolfk zum Thema Batch & Shell ...

Windows Tools
Dateiversionsverlauf über Gruppenrichtlinien steuern

Frage von KMUlife zum Thema Windows Tools ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Windows Server
Kennwort vergessen bei Hyper vserver 2012r (12)

Frage von jensgebken zum Thema Windows Server ...

Linux Desktop
Bildschirmauflösung unter Linux festlegen (12)

Frage von itebob zum Thema Linux Desktop ...

Windows Userverwaltung
gelöst Administrator hat alle Rechte verloren (10)

Frage von mrdead zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Gebäude mit WLAN ausstatten (9)

Frage von udobec zum Thema LAN, WAN, Wireless ...