• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.
  • The forums have been upgraded with support for dark mode. By default it will follow the setting on your system/browser. You may override it by scrolling to the end of the page and clicking the gears icon.

Need to modify VBS to append Number

Solaris17

Super Dainty Moderator
Staff member
Joined
Aug 16, 2005
Messages
27,688 (3.84/day)
Location
Alabama
System Name RogueOne
Processor Xeon W9-3495x
Motherboard ASUS w790E Sage SE
Cooling SilverStone XE360-4677
Memory 128gb Gskill Zeta R5 DDR5 RDIMMs
Video Card(s) MSI SUPRIM Liquid 5090
Storage 1x 2TB WD SN850X | 2x 8TB GAMMIX S70
Display(s) 49" Philips Evnia OLED (49M2C8900)
Case Thermaltake Core P3 Pro Snow
Audio Device(s) Moondrop S8's on Schitt Gunnr
Power Supply Seasonic Prime TX-1600
Mouse Razer Viper mini signature edition (mercury white)
Keyboard Wooting 80 HE White, Gateron Jades
VR HMD Quest 3
Software Windows 11 Pro Workstation
Benchmark Scores I dont have time for that.
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?
 
Not sure if this helps:

strFile = InputBox ("Enter File Name",,"C:\MyFile.Txt")
Const ForAppending = 8

set objFSO = CreateObject("Scripting.FileSystemObject")
set objFile = objFSO.OpenTextFile(strFile, ForAppending, True)

objFile.WriteLine("Time Stamp: " & Now)
objFile.Close
MsgBox "Done"

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
 
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

I will try this later thanks :)
 
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:
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

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.
 
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:
I put the code back up. It should work...theoretically.
 
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.

Sweet deal works mint thanks a bunch!
 
Back
Top