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

Need to modify VBS to append Number

Solaris17

Super Dainty Moderator
Staff member
Joined
Aug 16, 2005
Messages
25,772 (3.79/day)
Location
Alabama
System Name Rocinante
Processor I9 14900KS
Motherboard EVGA z690 Dark KINGPIN (modded BIOS)
Cooling EK-AIO Elite 360 D-RGB
Memory 64GB Gskill Trident Z5 DDR5 6000 @6400
Video Card(s) MSI SUPRIM Liquid X 4090
Storage 1x 500GB 980 Pro | 1x 1TB 980 Pro | 1x 8TB Corsair MP400
Display(s) Odyssey OLED G9 G95SC
Case Lian Li o11 Evo Dynamic White
Audio Device(s) Moondrop S8's on Schiit Hel 2e
Power Supply Bequiet! Power Pro 12 1500w
Mouse Lamzu Atlantis mini (White)
Keyboard Monsgeek M3 Lavender, Akko Crystal Blues
VR HMD Quest 3
Software Windows 11
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?
 
Joined
Dec 6, 2005
Messages
10,881 (1.63/day)
Location
Manchester, NH
System Name Senile
Processor I7-4790K@4.8 GHz 24/7
Motherboard MSI Z97-G45 Gaming
Cooling Be Quiet Pure Rock Air
Memory 16GB 4x4 G.Skill CAS9 2133 Sniper
Video Card(s) GIGABYTE Vega 64
Storage Samsung EVO 500GB / 8 Different WDs / QNAP TS-253 8GB NAS with 2x10Tb WD Blue
Display(s) 34" LG 34CB88-P 21:9 Curved UltraWide QHD (3440*1440) *FREE_SYNC*
Case Rosewill
Audio Device(s) Onboard + HD HDMI
Power Supply Corsair HX750
Mouse Logitech G5
Keyboard Corsair Strafe RGB & G610 Orion Red
Software Win 10
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
 

Solaris17

Super Dainty Moderator
Staff member
Joined
Aug 16, 2005
Messages
25,772 (3.79/day)
Location
Alabama
System Name Rocinante
Processor I9 14900KS
Motherboard EVGA z690 Dark KINGPIN (modded BIOS)
Cooling EK-AIO Elite 360 D-RGB
Memory 64GB Gskill Trident Z5 DDR5 6000 @6400
Video Card(s) MSI SUPRIM Liquid X 4090
Storage 1x 500GB 980 Pro | 1x 1TB 980 Pro | 1x 8TB Corsair MP400
Display(s) Odyssey OLED G9 G95SC
Case Lian Li o11 Evo Dynamic White
Audio Device(s) Moondrop S8's on Schiit Hel 2e
Power Supply Bequiet! Power Pro 12 1500w
Mouse Lamzu Atlantis mini (White)
Keyboard Monsgeek M3 Lavender, Akko Crystal Blues
VR HMD Quest 3
Software Windows 11
Benchmark Scores I dont have time for that.
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 :)
 

FordGT90Concept

"I go fast!1!11!1!"
Joined
Oct 13, 2008
Messages
26,259 (4.65/day)
Location
IA, USA
System Name BY-2021
Processor AMD Ryzen 7 5800X (65w eco profile)
Motherboard MSI B550 Gaming Plus
Cooling Scythe Mugen (rev 5)
Memory 2 x Kingston HyperX DDR4-3200 32 GiB
Video Card(s) AMD Radeon RX 7900 XT
Storage Samsung 980 Pro, Seagate Exos X20 TB 7200 RPM
Display(s) Nixeus NX-EDG274K (3840x2160@144 DP) + Samsung SyncMaster 906BW (1440x900@60 HDMI-DVI)
Case Coolermaster HAF 932 w/ USB 3.0 5.25" bay + USB 3.2 (A+C) 3.5" bay
Audio Device(s) Realtek ALC1150, Micca OriGen+
Power Supply Enermax Platimax 850w
Mouse Nixeus REVEL-X
Keyboard Tesoro Excalibur
Software Windows 10 Home 64-bit
Benchmark Scores Faster than the tortoise; slower than the hare.
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:

Solaris17

Super Dainty Moderator
Staff member
Joined
Aug 16, 2005
Messages
25,772 (3.79/day)
Location
Alabama
System Name Rocinante
Processor I9 14900KS
Motherboard EVGA z690 Dark KINGPIN (modded BIOS)
Cooling EK-AIO Elite 360 D-RGB
Memory 64GB Gskill Trident Z5 DDR5 6000 @6400
Video Card(s) MSI SUPRIM Liquid X 4090
Storage 1x 500GB 980 Pro | 1x 1TB 980 Pro | 1x 8TB Corsair MP400
Display(s) Odyssey OLED G9 G95SC
Case Lian Li o11 Evo Dynamic White
Audio Device(s) Moondrop S8's on Schiit Hel 2e
Power Supply Bequiet! Power Pro 12 1500w
Mouse Lamzu Atlantis mini (White)
Keyboard Monsgeek M3 Lavender, Akko Crystal Blues
VR HMD Quest 3
Software Windows 11
Benchmark Scores I dont have time for that.
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.
 

FordGT90Concept

"I go fast!1!11!1!"
Joined
Oct 13, 2008
Messages
26,259 (4.65/day)
Location
IA, USA
System Name BY-2021
Processor AMD Ryzen 7 5800X (65w eco profile)
Motherboard MSI B550 Gaming Plus
Cooling Scythe Mugen (rev 5)
Memory 2 x Kingston HyperX DDR4-3200 32 GiB
Video Card(s) AMD Radeon RX 7900 XT
Storage Samsung 980 Pro, Seagate Exos X20 TB 7200 RPM
Display(s) Nixeus NX-EDG274K (3840x2160@144 DP) + Samsung SyncMaster 906BW (1440x900@60 HDMI-DVI)
Case Coolermaster HAF 932 w/ USB 3.0 5.25" bay + USB 3.2 (A+C) 3.5" bay
Audio Device(s) Realtek ALC1150, Micca OriGen+
Power Supply Enermax Platimax 850w
Mouse Nixeus REVEL-X
Keyboard Tesoro Excalibur
Software Windows 10 Home 64-bit
Benchmark Scores Faster than the tortoise; slower than the hare.
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:

FordGT90Concept

"I go fast!1!11!1!"
Joined
Oct 13, 2008
Messages
26,259 (4.65/day)
Location
IA, USA
System Name BY-2021
Processor AMD Ryzen 7 5800X (65w eco profile)
Motherboard MSI B550 Gaming Plus
Cooling Scythe Mugen (rev 5)
Memory 2 x Kingston HyperX DDR4-3200 32 GiB
Video Card(s) AMD Radeon RX 7900 XT
Storage Samsung 980 Pro, Seagate Exos X20 TB 7200 RPM
Display(s) Nixeus NX-EDG274K (3840x2160@144 DP) + Samsung SyncMaster 906BW (1440x900@60 HDMI-DVI)
Case Coolermaster HAF 932 w/ USB 3.0 5.25" bay + USB 3.2 (A+C) 3.5" bay
Audio Device(s) Realtek ALC1150, Micca OriGen+
Power Supply Enermax Platimax 850w
Mouse Nixeus REVEL-X
Keyboard Tesoro Excalibur
Software Windows 10 Home 64-bit
Benchmark Scores Faster than the tortoise; slower than the hare.
I put the code back up. It should work...theoretically.
 

Solaris17

Super Dainty Moderator
Staff member
Joined
Aug 16, 2005
Messages
25,772 (3.79/day)
Location
Alabama
System Name Rocinante
Processor I9 14900KS
Motherboard EVGA z690 Dark KINGPIN (modded BIOS)
Cooling EK-AIO Elite 360 D-RGB
Memory 64GB Gskill Trident Z5 DDR5 6000 @6400
Video Card(s) MSI SUPRIM Liquid X 4090
Storage 1x 500GB 980 Pro | 1x 1TB 980 Pro | 1x 8TB Corsair MP400
Display(s) Odyssey OLED G9 G95SC
Case Lian Li o11 Evo Dynamic White
Audio Device(s) Moondrop S8's on Schiit Hel 2e
Power Supply Bequiet! Power Pro 12 1500w
Mouse Lamzu Atlantis mini (White)
Keyboard Monsgeek M3 Lavender, Akko Crystal Blues
VR HMD Quest 3
Software Windows 11
Benchmark Scores I dont have time for that.
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!
 
Top