keiosid
Goto Top

Dateinamen mit vbs auslesen und in eine TXT Datei schreiben

Hallo,

ich hoffe mal, das ist das richtige Unterforum.
Nach diversen suchen und Hilfe aus einem Windows Scripting Buch bekomme ich es trotzdem nicht hin.
Eigentlich sollte es trivial sein.
Ich habe ein Verzeichnis mit ca 100 PDF dateien. Von diesen Dateiensollen die ersten 10 Zeichen ausgelesen werden und in
eine TXT Datei geschrieben werden. Einmalig, nicht automatisiert.

Folgendes habe ich zusammengebastelt:

Option Explicit											 'Ausschalten von automatischer Variablenanlage  
Dim Dateiname, Zieldatei, strPath, zielPath, FLD, strName, file, strNameN, fso, f			 'Bestimmen der  Variablen  
strPath ="C:\Users\SAM\Desktop\SundS_MWST"  			 'Festlegen des Pfades für die Dateinamen zum Auslesen  
zielPath="C:\Users\SAM\Desktop\SundS_MWST\Liste.txt" 	 'Festlegen der Zieldatei  
Set FLD = FSO.GetFolder(strPath) 
For Each file in FLD.Files 
   strName = file.Name 
   strNameN = left(file.Name,10)
	Function SchreibeZeileInDatei
	Const ForReading = 1, ForWriting = 2
	Set fso = CreateObject("Scripting.FileSystemObject")  
	Set f = fso.OpenTextFile("C:\Users\SAM\Desktop\SundS_MWST\Liste.txt", ForWriting, True)  
	f.WriteLine strNameN
	End Function
Next

Wo liegen hier meine Fehler?
Gehe ma ldavon aus, dass es mehrer sind, da ich keine Programmierleuchte bin.

Vielen Dank
Grüße
KEIOS

Content-Key: 282354

Url: https://administrator.de/contentid/282354

Printed on: April 23, 2024 at 05:04 o'clock

Mitglied: 114757
114757 Sep 09, 2015 updated at 08:10:11 (UTC)
Goto Top
Moin,
dein korrigierter und gekürzter VBS-Code:
Option Explicit
Dim file, fso, f
Set fso = CreateObject("Scripting.FileSystemObject")  
Set f = fso.OpenTextFile("C:\Users\SAM\Desktop\SundS_MWST\Liste.txt", 2, True)  
For Each file in fso.GetFolder("C:\Users\SAM\Desktop\SundS_MWST").Files  
   f.WriteLine left(file.Name ,10)
Next
f.Close

Mit Powershell wäre das ein Einzeiler face-smile ...
gci 'C:\Users\SAM\Desktop\SundS_MWST\*.pdf' | %{$_.Name.Substring(0,10)} | out-file 'C:\Users\SAM\Desktop\SundS_MWST\Liste.txt'  
Gruß jodel32
Member: KeiosID
KeiosID Sep 09, 2015 at 08:01:46 (UTC)
Goto Top
Hallo Jodel,

das kling gut. Versteh ich auch.
Aber wie erstelle/starte ich eine Powershell datei?

Umbenennen einer Txt Datei in Exe geht wohl nicht(Win8)
Notfalls kann ich alles anch WIN 7 umstellen

Grundsätzlich würde ich es aber gerne mit VBS lösen,
um auch einen kleinen Lerneffekt zu haben.

Danke
GRuß
Keios
Mitglied: 114757
Solution 114757 Sep 09, 2015 updated at 08:58:35 (UTC)
Goto Top
Zitat von @KeiosID:

das kling gut. Versteh ich auch.
Aber wie erstelle/starte ich eine Powershell datei?
https://www.windowspro.de/andreas-kroschel/powershell-scripts-ausfuehren
Grundsätzlich würde ich es aber gerne mit VBS lösen,
um auch einen kleinen Lerneffekt zu haben.
Steht doch oben auch in VBS, du hast die Wahl zwischen beiden Varianten face-smile, was willst du mehr ?
Member: KeiosID
KeiosID Sep 09, 2015 at 08:35:40 (UTC)
Goto Top
ARRRGHHH..... das korrigierte habe ich im Eifer des Gefechts übersehen.

Teste das aus und melde mich dann nochmal.

My fault.

Grüße
Keios
Member: KeiosID
KeiosID Sep 09, 2015 at 08:58:10 (UTC)
Goto Top
Also Jodel,
erstmal danke, hat auf ANhieb funktioniert.
Obwohl ich nicht alles verstanden habe.
Habe es mal soweit kommentiert, den Rest mus ich wohl noch nach lernen.
Option Explicit  'Ausschalten der automatischen Vaiablenerzeugung  
Dim file, fso, f	'Anlegen der Benötigten Variablen  
Set fso = CreateObject("Scripting.FileSystemObject")  'Zugreifen/Verwenden der vorhanden CreateObject Funktion: fso FileSystemObject zuweisen  
Set f = fso.OpenTextFile("C:\Users\SAM\Desktop\SundS_MWST\Liste.txt", 2, True) 'da verließen Sie Ihn, Nur da shier wohl die Zieldatei zugewiesen wird  
For Each file in fso.GetFolder("C:\Users\SAM\Desktop\SundS_MWST").Files 'For next Schleife, hier arbeitet er die Dateien ab und schribt diese sofort in die Liste  
	f.WriteLine left(file.Name ,10)
next 'ForNExt fertig  
f.close 'Fenster schließen, bzw Beenden des Objekts, welches unter f verknüpft ist.  

Grüße
Keios
PS.: kann geschlossen werden
(Wenn man das überhaupt noch macht)