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

Copy mit Dateinamen aus Inhalten von Textdateien

Frage Entwicklung Batch & Shell

Mitglied: RaBe62

RaBe62 (Level 1) - Jetzt verbinden

18.02.2013, aktualisiert 19:15 Uhr, 1817 Aufrufe, 8 Kommentare

Eine Datei mit einem Standardisierten Dateinamen versehen, dessen Namensteile teilweise aus Textdateien stammen

Hi all,

vor 20 Jahren war die Kommandozeile mein Zuhause. Mit Windows ist das aber verdammt eingerostet. Nach langem googeln brauche ich nun doch einen Schubser um meine Aufgabenstellung zu lösen.

Ausgangssituation:
Ein Win7-System mit einem Ordner mit den Dateien
.brand.txt - enthält einen Text mit einem Kürzel des aktuell verwendeten Brand (z.B. bsit)
.version.txt - enthält einen Text mit der Versionsnummer (z.B. 1.02)
handout.pdf - eine zu kopierende und dabei neu zu benennende Datei

Ziel:
Mit der rechten Maustaste auf die Datei handout.pdf "Senden an" die Datei (gern auch mehrere markierte gleichzeitig) einem Batch übergeben, der im gleichen Verzeichnis eine Kopie der handout.pdf erstellt, die einen neuen Dateinamen erhält.

Der Dateiname setzt sich wie folgt zusammen:

4t_[inhaltVon.brand.txt]_[originalDateiName]_v[inhaltVon.version.txt]_[yyyy-mm-dd].[originalExtension]

Also im Beispiel:
4t_bsit_handout_v1.02_2013-02-18.pdf

Ich wollte in einem Batch Umgebungsvariablen mit den Inhalten der Dateien .brand.txt und .verison.txt setzen und diese dann im Copy verwenden. Aber schon diese schlichte Aufgabe überfordert mich gerade. Und selbst Google hat mir bisher nicht geholfen. Wahrscheinlich formuliere ich die Fragen falsch.

Kann mir hier jemand einen kleinen Anschubser geben?

Viele Grüße
Ralf...
Mitglied: bastla
18.02.2013 um 19:33 Uhr
Hallo RaBe62!

Um den Inhalt der ersten Zeile von ".brand.txt" in die Variable %Brand% zu bekommen, sollte
set /p Brand=<.brand.txt
genügen ...
Den Originaldateinamen einer dem Batch als Parameter übergebenen Datei erhältst Du mit "%~n1", den Typ mit "%~x1".

Genug geschubst?

Grüße
bastla
Bitte warten ..
Mitglied: mupan7
18.02.2013 um 20:55 Uhr
Sehr viel lässt sich auch mit dem Swiss File Knife (http://stahlworks.com/dev/swiss-file-knife.html) machen.
Bitte warten ..
Mitglied: RaBe62
19.02.2013 um 11:10 Uhr
Hallo bastla,

jaaaa - ein Schubser, wie er besser nicht hätte sein können - Danke.

Viele Grüße
Ralf...
Bitte warten ..
Mitglied: RaBe62
19.02.2013 um 11:11 Uhr
Hallo mupan7,

meine Aufgabe habe ich auch ohne das Messer gelöst bekommen. Aber ich habe immer wieder das Problem, Leerzeichen aus Dateinamen entfernen zu müssen. Da passt das Messer ausgezeichnet - vielen Dank.

Viele Grüße
Ralf...
Bitte warten ..
Mitglied: bastla
19.02.2013 um 11:21 Uhr
... obwohl auch
set "DateinameNeu=%DateinameAlt: =_%"
oder
set "DateinameNeu=%DateinameAlt: =%"
kein Hexenwerk ist ...

Grüße
bastla
Bitte warten ..
Mitglied: RaBe62
19.02.2013 um 11:42 Uhr
Meine Lösung ist jetzt ein Batch mit Link im SendTo

@echo off & setlocal
:Loop
if "%~1"=="" goto :eof
set /p brand=<_brand.txt
set /p project=<_project.txt
set /p version=<_version.txt
copy %1 "%~d1%~p14t_%brand%_%project%_%~n1_v%version%%~x1"
shift
goto :Loop
Macht genau was ich will.

Aaaaber - jetzt sind x neue Datein im Ordner und werden nicht (sofort) im Explorer angezeigt. Erst ein F5 bringt sie hervor.

Für den geübten User kein Problem. Aber wir kennen doch alle DAU, der dann sagt "hier geht gar nix mehr".

Frage:
Kann ich aus einem Batch irgendwie ein Reload (F5) des Explorers veranlassen? (Das ist eindeutig nach meiner aktiven Batch-Zeit auf 4dos )

Gruß
Ralf...
Bitte warten ..
Mitglied: bastla
19.02.2013 um 12:21 Uhr
Hallo RaBe62!
Kann ich aus einem Batch irgendwie ein Reload (F5) des Explorers veranlassen?
Kaum; allenfalls könntest Du ein neues Fenster öffnen mit
01.
if "%~1"=="" if defined Pfad start explorer "%Pfad%" & goto :eof 
02.
if not defined Pfad set "Pfad=%~dp1"
am Beginn Deiner Schleife.

Grüße
bastla
Bitte warten ..
Mitglied: mupan7
19.02.2013 um 14:11 Uhr
In Batches ist mir das noch nicht untergekommen. Mit der Powershell kannst du alles machen: http://powershell.com/cs/media/p/8322.aspx Allerdings müssen dazu Skripte erstmal erlaubt werden und / oder du musst dein Skript signieren, also das ist schon ein ganz anderer Ansatz. Vielleicht hilft dir das hier was:

http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/5f494432 ...

Möglicherweise lässt sich die ChangeNotify-Funktion in shell32.dll ja auch mit einer rundll32-Zeile aufrufen?
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Vergleich einer Zeichenfolge in zwei Dateinamen (3)

Frage von hongziehong zum Thema Batch & Shell ...

Microsoft Office
gelöst Excel VBA - Inhalte und Dateiname von txt-Dateien automatisch in Excel importieren (2)

Frage von Booster07 zum Thema Microsoft Office ...

Batch & Shell
gelöst Komplette Zeile aus Textdatei auslesen (3)

Frage von tegwert zum Thema Batch & Shell ...

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
Server
Bilder aus dem Web mit CSV runterladen (30)

Frage von Yannosch zum Thema Server ...

Server-Hardware
Bestehendes Raid erweitern um 4 gleiche Platten! (Verständnis Fragen) (12)

Frage von Hendrik2586 zum Thema Server-Hardware ...

Windows Update
WSUS 4 (Server 2012 R2) - Windows 10 Updates nicht möglich (12)

Frage von c0d3.r3d zum Thema Windows Update ...