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

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, 1790 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(2)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Windows Update
Package Publisher - Copy has failed falscher Parameter

Frage von Belloci zum Thema Windows Update ...

Batch & Shell
gelöst Textdateien TXT in allen Verzeichnissen suchen und zusammenfassen (19)

Frage von chgs2011 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...