Link to home
Create AccountLog in
Avatar of thenelson
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!
Avatar of sirbounty
sirbounty
Flag of United States of America image

one thing I spot is that ren is an enternal command...thus if you're going to use it, you'll need to pass it through the command processor...

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?
Avatar of thenelson
thenelson

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.
ASKER CERTIFIED SOLUTION
Avatar of sirbounty
sirbounty
Flag of United States of America image

Link to home
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
See answer
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.
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