Suche eine Batch,Tool oder Programm zum umbenennen von Dateien
Hallo Gemeinde
Ich habe folgendes Problem
Von meinem Brother Drucker Scanner Kommen die Daten in einen Ordner ( C:\Users\xxxxx\Desktop\Scanner )da liegen sie mit dem namen 01.12.2013.0001.pdf nun binde ich die Datei in ein Programm ein das Programm löscht die Datei dann im Scanner Ordner und legt die Datei in einer Datenbank ab das soll es auch das ist alles auch gut so nun das Problem.
Die nächste PDF die ich ein scanne heißt leider auch wieder 01.12.2013.001.pdf und damit erkennt mein Programm die Datei nicht an und legt sie nicht in der Datenbank ab weil der Name schon vorhanden ist.
Nun meine frage gibt es eine Batch,Tool oder Programm was meinen Ordner ( C:\Users\xxxxx\Desktop\Scanner ) überwacht und wenn die PDF 01.12.2013.001.pdf rein kommt sie automatisch umbenennt in 01.12.2013.12.32.44.pdf ( Datum.Uhrzeit mit sec.pdf) ?
MFG
Delobo
Ich habe folgendes Problem
Von meinem Brother Drucker Scanner Kommen die Daten in einen Ordner ( C:\Users\xxxxx\Desktop\Scanner )da liegen sie mit dem namen 01.12.2013.0001.pdf nun binde ich die Datei in ein Programm ein das Programm löscht die Datei dann im Scanner Ordner und legt die Datei in einer Datenbank ab das soll es auch das ist alles auch gut so nun das Problem.
Die nächste PDF die ich ein scanne heißt leider auch wieder 01.12.2013.001.pdf und damit erkennt mein Programm die Datei nicht an und legt sie nicht in der Datenbank ab weil der Name schon vorhanden ist.
Nun meine frage gibt es eine Batch,Tool oder Programm was meinen Ordner ( C:\Users\xxxxx\Desktop\Scanner ) überwacht und wenn die PDF 01.12.2013.001.pdf rein kommt sie automatisch umbenennt in 01.12.2013.12.32.44.pdf ( Datum.Uhrzeit mit sec.pdf) ?
MFG
Delobo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 223392
Url: https://administrator.de/contentid/223392
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
5 Kommentare
Neuester Kommentar
mit batch geht das.
Du kannst aber auch ein einfaches Tools nehmen: Ant renamer http://www.chip.de/downloads/Ant-Renamer_18204061.html
Viele Dinge gehen damit einfacher
Gruß
Netman
Du kannst aber auch ein einfaches Tools nehmen: Ant renamer http://www.chip.de/downloads/Ant-Renamer_18204061.html
Viele Dinge gehen damit einfacher
Gruß
Netman
Hi,
falls du etwas Programmierkenntnisse hast, kannst du mit VB.NET Express oder C# Express die FilesystemWatcher-Komponente benutzen und mit den Funktionen aus System.File die Datei umbenennen.
Alternativ kannst du dir einen Task anlegen, der alle 1 Minute wiederholt wird. Dieser sollte dann eine Batch-Datei aufrufen, welche mit ForFiles für jede Datei einen Befehl ausführt. Dann bei ForFiles als Befehl "ren @ path "@fname.%uhrzeit%.@ext".
Für %uhrzeit% musst du vorher "nur noch" den aktuelle Zeitstempel - bereinigt um Sonderzeichen wie z. B. ":" - einsetzen. Das kannst du am Anfang der Batch-Datei per set-Befehl setzen.
Informationen zur Verwendung von ForFiles gibts hier: http://ss64.com/nt/forfiles.html
Grüße, loonydeluxe
falls du etwas Programmierkenntnisse hast, kannst du mit VB.NET Express oder C# Express die FilesystemWatcher-Komponente benutzen und mit den Funktionen aus System.File die Datei umbenennen.
Alternativ kannst du dir einen Task anlegen, der alle 1 Minute wiederholt wird. Dieser sollte dann eine Batch-Datei aufrufen, welche mit ForFiles für jede Datei einen Befehl ausführt. Dann bei ForFiles als Befehl "ren @ path "@fname.%uhrzeit%.@ext".
Für %uhrzeit% musst du vorher "nur noch" den aktuelle Zeitstempel - bereinigt um Sonderzeichen wie z. B. ":" - einsetzen. Das kannst du am Anfang der Batch-Datei per set-Befehl setzen.
Informationen zur Verwendung von ForFiles gibts hier: http://ss64.com/nt/forfiles.html
Grüße, loonydeluxe
Hey, Vorschlag für ein System mit deutschen Formaten:
lg.
@ECHO OFF &SETLOCAL
cd /d "%userprofile%\Desktop\Scanner"
:loop
rem 10 Sekunden warten
ping -n 10 localhost >nul
rem wenn 01.12.2013.0001.pdf nicht vorhanden, zurück
if not exist "%date%.0001.pdf" goto:loop
rem ansonsten umbenennen, sec100 entfernen
set "MyTime=%time:~0,8%"
rem vorm umbenennen ":" in "." umwandeln
ren "%date%.0001.pdf" "%date%.%MyTime::=.%.pdf"
rem und von vorn
goto:loop
Hallo Delobo,
hierzu kannst du folgendes VB-Script nutzen, welches einmal gestartet, im Hintergrund den entsprechenden Ordner dauerhaft überwacht und in einem bestimmten Intervall das du in Zeile 4 angibst die entsprechende Datei umbenennt. Den zu überwachenden lokalen Pfad gibst du in Zeile 2 an (ohne Backslash am Ende)
Zur Info: Das Script gibt keinerlei Ausgaben aus, wenn es gestartet wird, d.h. es läuft direkt im Hintergrund und Überwacht den Ordner kontinuierlich. Du erkennst das Script im Taskmanger als Task mit dem Prozessnamen wscript.exe, oder wenn es via cscript aufgerufen wurde mit cscript.exe.
Zu Beachten: Das Script benennt nur neu hinzukommende Dateien um, die seit dem Start des Scriptes hinzugekommen sind.
Grüße Uwe
hierzu kannst du folgendes VB-Script nutzen, welches einmal gestartet, im Hintergrund den entsprechenden Ordner dauerhaft überwacht und in einem bestimmten Intervall das du in Zeile 4 angibst die entsprechende Datei umbenennt. Den zu überwachenden lokalen Pfad gibst du in Zeile 2 an (ohne Backslash am Ende)
'Pfad der zu überwachen ist
Const strPath = "C:\temp\source"
'Überwachungs-Interval in Sekunden
Const intInterval = "5"
'------------------------------
strDrive = Split(strPath,"\")(0)
strFolder = Replace(Split(strPath,":")(1),"\","\\") & "\\"
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set objShell = CreateObject("Wscript.Shell")
Set objWMIService = GetObject( "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2" )
strQuery = "Select * From __InstanceOperationEvent" _
& " Within " & intInterval _
& " Where Targetinstance Isa 'CIM_DataFile'" _
& " And TargetInstance.Drive='" & strDrive & "'"_
& " And TargetInstance.Path='" & strFolder & "'"
Set colEvents = objWMIService.ExecNotificationQuery (strQuery)
Do
Set objEvent = colEvents.NextEvent()
Set objTargetInst = objEvent.TargetInstance
Select Case objEvent.Path_.Class
Case "__InstanceCreationEvent"
filename = objTargetInst.Name
If LCase(Right(filename,7)) = "001.pdf" Then
datum = Replace(Replace(Now(),":",".")," ",".")
newFileName = datum & ".pdf"
Set f = fso.GetFile(filename)
f.Name = newFileName
End If
End Select
Loop
Zu Beachten: Das Script benennt nur neu hinzukommende Dateien um, die seit dem Start des Scriptes hinzugekommen sind.
Grüße Uwe
Äquivalentes Script in Powershell
<#
Monitors folder for new files and renames specific files
#>
# Variables -------------------------
# local folder path to monitor
$localFolderPath = "C:\Temp\source"
# interval to check for changes
$intMonitorInterval = 2
# file pattern in folder to monitor
$strFilePattern = "%001.pdf"
# -----------------------------------
# get seperate drive and path for wql query specific formatting
$strDrive = $localFolderPath.Split("\")
$localFolderPath.TrimEnd("\")
$strPath = $localFolderPath.Split(":")[1].Replace("\","\\")+"\\"
# action fired when event occurs
$eventaction = {
#object which fired the event
$obj = $Event.SourceEventArgs.NewEvent.TargetInstance
#create reference to a wmi-Object to get access to a function which converts wmi-datetime-strings to .net DateTime-Object
$objWMI = (gwmi -Class "Win32_Process")
$fileModifiedDate = $objWMI.ConvertToDateTime($obj.LastModified)
#new filename
$newName = "$(get-date $fileModifiedDate -Format 'dd.MM.yyyy HH.mm.ss').pdf"
#rename the file
Rename-Item -Path $obj.Name -NewName $newName
#write some info to the console
write-host "Neue Datei im Ordner: '"$obj.Name"' wurde umbenannt in '"$newname"'"
}
# WQL Query which monitors a folder every x seconds for a new file appearing with a specific filename
$query = "Select * From __InstanceCreationEvent WITHIN $intMonitorInterval`
where TargetInstance ISA 'CIM_DataFile'`
and TargetInstance.Drive = '$strDrive'`
and TargetInstance.Path = '$strPath'`
and TargetInstance.Name like '$strFilePattern'"
#actually register Event-Subscriber
Register-WmiEvent -query $query -SourceIdentifier "Monitor Folder Watcher" -action $eventaction
# to end monitoring the event, call
# Unregister-Event -SourceIdentifier "Monitor Folder Watcher"
Hallo colinardo,
fast genauso hatte ich es eben auch zusammen geschrotet. Du warst schneller
Grüße
rubberman
fast genauso hatte ich es eben auch zusammen geschrotet. Du warst schneller
Option Explicit
Const Path = "%userprofile%\Desktop\Scanner"
Const FindLike = "%.001.pdf"
Const Interval = 1
Dim objWSH, objFSO, objWMI, objEvent, colEvents
Dim strPath, strDrive, strFolder, strFoundFullName, strFoundCreationDate, _
strYear, strMonth, strDay, strHour, strMinute, strSecond, strNewFullName
Set objWSH = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
objWSH.CurrentDirectory = objFSO.GetParentFolderName(WScript.ScriptFullName)
strPath = objWSH.ExpandEnvironmentStrings(Path)
strPath = objFSO.GetAbsolutePathName(strPath)
If Not objFSO.FolderExists(strPath) Then
MsgBox "Verzeichnis existiert nicht."
WScript.Quit
End If
strDrive = objFSO.GetDriveName(strPath)
strFolder = Replace(Mid(strPath, 3) & "\", "\", "\\", 1, -1, vbTextCompare)
Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colEvents = objWMI.ExecNotificationQuery( _
"SELECT * FROM __InstanceCreationEvent" _
& " WITHIN " & CStr(Interval) _
& " WHERE Targetinstance ISA 'CIM_DataFile'" _
& " AND TargetInstance.Drive='" & strDrive & "'" _
& " AND TargetInstance.Path='" & strFolder & "'" _
& " AND TargetInstance.Name LIKE '" & FindLike & "'")
Do
Set objEvent = colEvents.NextEvent()
strFoundFullName = objEvent.TargetInstance.Name
strFoundCreationDate = objEvent.TargetInstance.CreationDate
strYear = Mid(strFoundCreationDate, 1, 4)
strMonth = Mid(strFoundCreationDate, 5, 2)
strDay = Mid(strFoundCreationDate, 7, 2)
strHour = Mid(strFoundCreationDate, 9, 2)
strMinute = Mid(strFoundCreationDate, 11, 2)
strSecond = Mid(strFoundCreationDate, 13, 2)
strNewFullName = objFSO.BuildPath(objFSO.GetParentFolderName(strFoundFullName), _
strDay & "." & strMonth & "." & strYear & "." & strHour & "." & strMinute & "." & strSecond & ".pdf")
objFSO.MoveFile strFoundFullName, strNewFullName
Loop
Grüße
rubberman