thenelson
asked on
Change file name and date created in batch or script
I have several thousand files with the following name format:
Doe, Jane 2006-02-25
I wish to rename all the files stripping the date and setting the file created date to the date in the name. For the example above:
File name: Doe, Jane Date created 02-25-2006
Here is a piece of VB script I wrote but I am having problems with the lines that change the file name and create date:
Dim FileName As String, NewFileDate As String, NewFileName As String
Dim pos As Integer
ChDir "\Temp1"
FileName = Dir("\temp1\*.*")
While FileName <> ""
pos = InStrRev(FileName, " ")
NewFileName = Left(FileName, pos - 1)
Trim NewFileName
NewFileDate = Mid(FileName, pos + 1)
NewFileDate = Left(NewFileDate, Len(NewFileDate) - 4)
Debug.Print FileName, "]" & NewFileName & "[", "]" & NewFileDate & "["
'***** Shell "ren """ & FileName & """ """ & NewFileName & "" ***** PROBLEM HERE
'***** Shell "Touch """ & NewFileName & """ /d:" & NewFileDate ***** PROBLEM HERE
FileName = Dir
Wend
Can someone either help me with my code or provide a different approach?
Thanks!
Doe, Jane 2006-02-25
I wish to rename all the files stripping the date and setting the file created date to the date in the name. For the example above:
File name: Doe, Jane Date created 02-25-2006
Here is a piece of VB script I wrote but I am having problems with the lines that change the file name and create date:
Dim FileName As String, NewFileDate As String, NewFileName As String
Dim pos As Integer
ChDir "\Temp1"
FileName = Dir("\temp1\*.*")
While FileName <> ""
pos = InStrRev(FileName, " ")
NewFileName = Left(FileName, pos - 1)
Trim NewFileName
NewFileDate = Mid(FileName, pos + 1)
NewFileDate = Left(NewFileDate, Len(NewFileDate) - 4)
Debug.Print FileName, "]" & NewFileName & "[", "]" & NewFileDate & "["
'***** Shell "ren """ & FileName & """ """ & NewFileName & "" ***** PROBLEM HERE
'***** Shell "Touch """ & NewFileName & """ /d:" & NewFileDate ***** PROBLEM HERE
FileName = Dir
Wend
Can someone either help me with my code or provide a different approach?
Thanks!
ASKER
On the line:
Shell "ren " & chr(34) & FileName & chr(34) & " " & chr(34) & NewFileName & chr(34)
I am getting "File not found"
Same thing for
Shell "Command ren " & chr(34) & FileName & chr(34) & " " & chr(34) & NewFileName & chr(34)
Touch works fine except it only excepts short (8.3) file names.
Shell "ren " & chr(34) & FileName & chr(34) & " " & chr(34) & NewFileName & chr(34)
I am getting "File not found"
Same thing for
Shell "Command ren " & chr(34) & FileName & chr(34) & " " & chr(34) & NewFileName & chr(34)
Touch works fine except it only excepts short (8.3) file names.
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
Shell "cmd /c ren " & chr(34) & FileName & chr(34) & " " & chr(34) & NewFileName & chr(34)
took cure of that line - thanks!
Now I have to find a utility that changes the file date and accepts long file names or a way to feed the corset short name to Touch.
took cure of that line - thanks!
Now I have to find a utility that changes the file date and accepts long file names or a way to feed the corset short name to Touch.
ASKER
sirbounty,
With your help, I got it. Instead of Touch I am now using DirDate:
ChDir "C:\Temp1"
FileName = Dir("\temp1\*.*")
While FileName <> ""
pos = InStrRev(FileName, " ")
NewFileName = Left(FileName, pos - 1)
Trim NewFileName
NewFileDate = Mid(FileName, pos + 1)
NewFileDate = Left(NewFileDate, Len(NewFileDate) - 4)
NewFileDate = Mid(NewFileDate, 6) & "-" & Left(NewFileDate, 4)
Shell "cmd /c ren """ & FileName & """ """ & NewFileName & ".tif"""
Shell """C:\Program Files\DirDate\dirdate.exe" "" & " Date=" & NewFileDate & " """ & NewFileName & ".tif"""
FileName = Dir
Wend:
Thanks for your help.
Nelson
With your help, I got it. Instead of Touch I am now using DirDate:
ChDir "C:\Temp1"
FileName = Dir("\temp1\*.*")
While FileName <> ""
pos = InStrRev(FileName, " ")
NewFileName = Left(FileName, pos - 1)
Trim NewFileName
NewFileDate = Mid(FileName, pos + 1)
NewFileDate = Left(NewFileDate, Len(NewFileDate) - 4)
NewFileDate = Mid(NewFileDate, 6) & "-" & Left(NewFileDate, 4)
Shell "cmd /c ren """ & FileName & """ """ & NewFileName & ".tif"""
Shell """C:\Program Files\DirDate\dirdate.exe"
FileName = Dir
Wend:
Thanks for your help.
Nelson
Shell "ren " & chr(34) & FileName & chr(34) & " " & chr(34) & NewFileName & chr(34)
I wouldn't think that touch would cause a problem though, unless it's not in your path...have you tried pointing to the container folder for touch?