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, 1804 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
gelöst PowerShell Skript für doppelte Dateinamen (1)

Frage von janelsaesser zum Thema Batch & Shell ...

Windows Netzwerk
gelöst Copy Befehl in einer batch funktioniert nicht. (3)

Frage von Pauli-H zum Thema Windows Netzwerk ...

Batch & Shell
Ordnernamen aus Dateinamen erstellen (1)

Frage von Dr.Byte zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

SAN, NAS, DAS
+100tb Storagelösung (11)

Frage von Data-Fabi zum Thema SAN, NAS, DAS ...