1. Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

Need to modify VBS to append Number

Discussion in 'Programming & Webmastering' started by Solaris17, Jul 29, 2013.

  1. Solaris17

    Solaris17 Creator Solaris Utility DVD

    Joined:
    Aug 16, 2005
    Messages:
    17,222 (5.17/day)
    Thanks Received:
    3,571
    Location:
    Florida
    Hey guys I need to modify this script to append a file name instead of rewrighting it. I dont really know anything about VBS unfortunately and I can see where it is saying to over wright. but im unsure how to proceed.

    Code:
    ' ' VBScript
    Option explicit
    
    ' Next line is important, as it calls our function:
    Wscript.Echo CopyAFile( "c:\HORWA05DS\PC\Installation", "\\10.204.103.19\version", "pc_release_id.txt")
    
    ' Next three lines illustrate correspondence of data to arguments:
    ''' strSourceFolder := "c:\HORWA05DS\PC\Installation"
    ''' strTargetFolder := "\\10.204.103.19\version"
    ''' strFileName := "pc_release_id.txt"
    '
    
    Wscript.Quit
    
    Function CopyAFile( Byval strSourceFolder, Byval strTargetFolder, Byval strFileName)
    '
    ' Presumptions: 
    ' strSourceFolder folder must exist
    ' strTargetFolder folder must exist
    ' strFileName file must exist in strSourceFolder folder
    '  
    Dim objFSO,[COLOR="Red"] booOverWrite[/COLOR], strResult
    Set objFSO = CreateObject( "Scripting.FileSystemObject")
    If objFSO.FileExists( strSourceFolder & "\" & strFileName) _
        And UCase( strSourceFolder) <> UCase( strTargetFolder) Then
      If objFSO.FolderExists( strTargetFolder) Then
      Else
        strResult = "The destination folder does not exist! In general, creating a folder may be a non-trivial task."
        CopyAFile = strResult
        Exit Function
      End If
      [COLOR="red"]If objFSO.FileExists( strTargetFolder & "\" & strFileName) Then
        strResult = "The file exists, overwritten"
        booOverWrite = vbTrue[/COLOR]
      Else
        strResult = "The file does not exist, created"
        booOverWrite = vbFalse
      End If
      objFSO.CopyFile strSourceFolder & "\" & strFileName, strTargetFolder & "\", [COLOR="red"]booOverWrite[/COLOR]
    Else
      strResult = "The source file does not exist, or identical Source and Target folders!"
    End If
    CopyAFile = strResult
    End Function
    Can anyone help me out? Basically I have this script working as it should. I need to pull this file and dump it on a network folder so we can monitor that a specific program version is being used. however I need it to append so that I can make sure when an update hits that its being updated. I have multiple PCs dumping this file. Maybe VBS can pull a computer name and append that instead?
     
  2. Sasqui

    Sasqui

    Joined:
    Dec 6, 2005
    Messages:
    7,668 (2.38/day)
    Thanks Received:
    1,409
    Location:
    Manchester, NH
    Not sure if this helps:

    The ForAppending variable does this:
    CONSTANT VALUE DESCRIPTION
    ForReading 1 Opens a file for reading only
    ForWriting 2 Opens a file for writing. If the file already exists, the contents are overwritten.
    ForAppending 8 Opens a file and starts writing at the end (appends). Contents are not overwritten.

    http://www.devguru.com/technologies/VBScript/14075

    http://myitforum.com/cs2/blogs/dhit...cript-to-append-to-a-specified-text-file.aspx
     
    Solaris17 says thanks.
  3. Solaris17

    Solaris17 Creator Solaris Utility DVD

    Joined:
    Aug 16, 2005
    Messages:
    17,222 (5.17/day)
    Thanks Received:
    3,571
    Location:
    Florida
    I will try this later thanks :)
     
  4. FordGT90Concept

    FordGT90Concept "I go fast!1!11!1!"

    Joined:
    Oct 13, 2008
    Messages:
    13,596 (6.24/day)
    Thanks Received:
    3,519
    Location:
    IA, USA
    You just want to add the computer name to the file name?

    First, it should be duly noted that modifying this function would result in changes to all places it is used so there may be major unintended consequences.

    Second, is this script running on client computers or a server? If it is on server, getting the computer name could be problematical.

    Third, maybe it would be better if a more advanced program parsed the log on the client and submitted something to a server application which collates and displays it. Combing through lots of text files checking version numbers sounds tedious to me.


    For potential future reference: http://www.codeproject.com/Articles/3183/Enhanced-EventLog-writing-for-NET-Applications
     
    Last edited: Jul 29, 2013
    Crunching for Team TPU
  5. Solaris17

    Solaris17 Creator Solaris Utility DVD

    Joined:
    Aug 16, 2005
    Messages:
    17,222 (5.17/day)
    Thanks Received:
    3,571
    Location:
    Florida
    I just want the Pc name appended. We currently use a specific schema for the names which would help us isolate which Pcs are not updating. This script runs on the client machines copying the version file the program creates to a server that has a shared drive.

    the script as is works. but it overwrites and I cant have it do that because then their would be no way to isolate which PCs arent updating.
     
  6. FordGT90Concept

    FordGT90Concept "I go fast!1!11!1!"

    Joined:
    Oct 13, 2008
    Messages:
    13,596 (6.24/day)
    Thanks Received:
    3,519
    Location:
    IA, USA
    In which case...

    Edit: ABORT: logical error!

    Edit: Fixed...
    Code:
    ' ' VBScript
    Option explicit
    
    ' Next line is important, as it calls our function:
    Wscript.Echo CopyAFile( "c:\HORWA05DS\PC\Installation", "\\10.204.103.19\version", "pc_release_id.txt")
    
    ' Next three lines illustrate correspondence of data to arguments:
    ''' strSourceFolder := "c:\HORWA05DS\PC\Installation"
    ''' strTargetFolder := "\\10.204.103.19\version"
    ''' strFileName := "pc_release_id.txt"
    '
    
    Wscript.Quit
    
    Function CopyAFile( Byval strSourceFolder, Byval strTargetFolder, Byval strFileName)
    '
    ' Presumptions: 
    ' strSourceFolder folder must exist
    ' strTargetFolder folder must exist
    ' strFileName file must exist in strSourceFolder folder
    '  
    Dim objFSO, booOverWrite, strResult[color=red], WshNetwork, strDestFileName
    
    Set WshNetwork = CreateObject("WScript.Network")
    strDestFileName = WshNetwork.ComputerName & "_" & strFileName ' COMPUTERNAME_FILENAME
    
    [/color]Set objFSO = CreateObject( "Scripting.FileSystemObject")
    If objFSO.FileExists( strSourceFolder & "\" & strFileName) _
        And UCase( strSourceFolder) <> UCase( strTargetFolder) Then
      If objFSO.FolderExists( strTargetFolder) Then
      Else
        strResult = "The destination folder does not exist! In general, creating a folder may be a non-trivial task."
        CopyAFile = strResult
        Exit Function
      End If
      If objFSO.FileExists( strTargetFolder & "\" & [color=red]strDestFileName[/color]) Then
        strResult = "The file exists, overwritten"
        booOverWrite = vbTrue
      Else
        strResult = "The file does not exist, created"
        booOverWrite = vbFalse
      End If
      objFSO.CopyFile strSourceFolder & "\" & strFileName, strTargetFolder & "\" [color=red]& strDestFileName[/color], booOverWrite
    Else
      strResult = "The source file does not exist, or identical Source and Target folders!"
    End If
    CopyAFile = strResult
    End Function

    This is untested code so...enter at your own risk.
     
    Last edited: Jul 29, 2013
    Solaris17 says thanks.
    Crunching for Team TPU
  7. FordGT90Concept

    FordGT90Concept "I go fast!1!11!1!"

    Joined:
    Oct 13, 2008
    Messages:
    13,596 (6.24/day)
    Thanks Received:
    3,519
    Location:
    IA, USA
    I put the code back up. It should work...theoretically.
     
    Crunching for Team TPU
  8. Solaris17

    Solaris17 Creator Solaris Utility DVD

    Joined:
    Aug 16, 2005
    Messages:
    17,222 (5.17/day)
    Thanks Received:
    3,571
    Location:
    Florida
    Sweet deal works mint thanks a bunch!
     
  9. DanTheBanjoman SeƱor Moderator

    Joined:
    May 20, 2004
    Messages:
    10,553 (2.79/day)
    Thanks Received:
    1,383
    Replace strfilename with strfilename & environ("computername") or something.
     
    Solaris17 says thanks.

Currently Active Users Viewing This Thread: 1 (0 members and 1 guest)

Share This Page