2010-06-28 6 views
1

J'ai créé un fichier texte "list.txt" dans commonapplicationdatafolder en utilisant le script VBscript.i ci-dessous. J'affiche quelques valeurs d'une variable (strlist) en écrivant dans fichier texte.Comment écraser et écrire dans un fichier texte à l'aide de Vbscript

Const Value = &H23& 
Const PATH = "\Cape\ibs" 

Dim fso     ' File System Object 
Dim spFile    ' Text File object to write 
Dim objApplication  ' Application object 
Dim objFolder   ' Folder object 
Dim objFolderItem  ' FolderItem object 

Set objApplication = CreateObject("Shell.Application") 
Set objFolder = objApplication.Namespace(Value) 
Set objFolderItem = objFolder.Self 
sname = objFolderItem.Path & PATH & "\list.txt" 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set spFile = fso.CreateTextFile(sname, True) 
spoFile.WriteLine(strlist) 
spoFile.Close 

Voici mes doutes

1> Ici avant de créer ce fichier que je dois supprimer l'ancien « list.txt » existant Parce que lors de l'installation je veux toujours créer le fichier de la liste. Donc, je veux inclure le code qui supprime tout fichier existant (tout ancien list.txt), avant de créer la dernière one.Here je l'ai fait le code suivant

If fso.FileExists(sname) Then 
    fso.DeleteFile sname, True 
Else 
    Set spFile = fso.CreateTextFile(sname, True) 
    spoFile.WriteLine(strlist) 
    Set objFolderItem = Nothing 
    Set objFolder = Nothing 
    Set objApplication = Nothing 
    Set fso = Nothing 
    spoFile.Close 
End If 

ce qui se passe est-il va créer la première fois le dossier , la prochaine fois il va le supprimer, mais je veux toujours ce fichier là (nouveau frais avec une valeur de «strlist») Quelqu'un peut-il me dire le code vbscript pour le faire.Ils enlevé Else partie aussi mais seulement suppression en cours, ci-dessous les choses ne fonctionnent pas signifie la création.

2> Ici, je suis en train d'écrire pour "list.txt" en utilisant simplement la méthode 'WriteLine' (spoFile.WriteLine (de strlist)), mais je l'ai lu quelque part que nous devons utiliser 'OpenTextFile' (Const ForWriting = 2) pour écrire, Si c'est le cas, quels changements dois-je faire ici, est-ce obligatoire?

+0

'OpenTextFile' (Const ForWriting = 2) pour l'écriture, est-ce obligatoire? ou simplement spoFile.WriteLine (strlist) est suffisant – peter

Répondre

4

Vous devez déplacer votre décision de suppression ou de suppression avant votre décision d'écriture.

If fso.FileExists(sname) Then 
    'you delete if you find it' 
    fso.DeleteFile sname, True 
End If 
'you always write it anyway.' 
Set spoFile = fso.CreateTextFile(sname, True) 
spoFile.WriteLine(strlist) 
Set objFolderItem = Nothing 
Set objFolder = Nothing 
Set objApplication = Nothing 
Set fso = Nothing 
spoFile.Close 

alternativement à votre question avec des valeurs d'écriture constante et ce qui en fait un peu (très peu) plus vite, vous pouvez essayer ce qui suit:

If fso.FileExists(sname) Then 
    Set spoFile = fso.OpenTextFile(sname, 2, True) 
Else 
    Set spoFile = fso.CreateTextFile(sname, True) 
End If 
' perform your write operations and close normally' 
+0

C'est bien, son fonctionnement, toute mauvaise logique sont là dans mon codage, je suis nouveau à vbscript – peter

+0

'OpenTextFile' (Const ForWriting = 2) pour l'écriture, Est-il obligatoire? ou simplement spoFile.WriteLine (strlist) est suffisant – peter

+0

En fait, vous n'avez besoin que de la constante d'écriture pour ouvrir un fichier texte existant. Dans votre cas, vous le supprimez et en créez un nouveau. J'ai modifié ma réponse pour ajouter une alternative pour utiliser la condition dont vous parlez. – Gabriel

1
' copy in flash drive 
Const Removable = 1 
Set FSO = CreateObject("Scripting.FileSystemObject") 
Set colDrives = FSO.Drives 
For Each Drive in colDrives 
If Drive.DriveType = Removable then 
fso.copyfile "filename.vbs" , Drive.DriveLetter&":\" 
End if 
Next 
Questions connexes