Vorweg: Ich habe so gut wie keine Ahnung von VBS.
Habe mir ein Skript heruntergeladen, das in einem bestimmten Verzeichnis aus den Dateinamen alle Umlaute entfernt.
Wie realisier ich das, dass man beim Start des Sripts einen Pfad eingibt?
Das Originalscript fängt so an (der Ordner ist fest eingestellt):
"
Ordner = "D:\Test"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Fld = fso.GetFolder(Ordner)
usw. usw.
"
Irgendwie muss das doch über eine Inputbox zu machen sein:
" Eingabe = InputBox("Gebe den Pfad ein: z.B. D:\TMP") "
Wie aber bekomme ich die Variable "& Eingabe"
in den
Anwendungspfad? Statt " Ordner = "D:\Test" "
sollte dann so was ähnliches wie " Ordner = " & Eingabe" stehen, so wie ich das angegeben habe,
funktioniert das (natürlich) nicht.
Da ich nur dieses einzige VB-Skript benötige, würde ich mich freuen, wenn mir jemand Hilfestellung geben könnte - leider habe ich über google nichts gefunden.
Danke
apokalypsenow!
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Hier einiges Prinzipielles zur Inputbox
http://www.it-academy.cc/article/731/Ein+und+Ausgabe+mit+VB+realisieren.html
Irgendwie muss das doch über eine Inputbox zu machen sein:
" Eingabe = InputBox("Gebe den Pfad ein: z.B. D:TMP") "
Wie aber bekomme ich die Variable "& Eingabe"
In der Variable Eingabe steht die Eingabe der Inputbox und diese musst Du nun entsprechend auswerten bzw. weiterverarbeiten
Lieber Repi:
Genauso hab ich mir das ja auch gedacht. Entsprechend auswerten & weiterverabeiten....
Und meine Frage im Originalbeitrag war:
Wie mach ich das?
Wenn ich das richtig sehe, geht das auch nicht aus dem Beitrag aus Deinem Link hervor.
Trotzdem vielen Dank, der Beitrag über die Inputbox war ansonsten sehr informativ.
Grüsse
apokalypsenow!
Wieso, wie mach ich das ? In der Variable Eingabe steht jetzt als String die von Dir getätigte Eingabe.
z.B. c:\temp , wenn Du dieses eingegebn hast.
Ein ausgabe = msgbox(eingabe) würde jetzt z.b. diese Pfadangabe ausgeben.
Ebenso, könntest Du jetzt den Inhalt der Variable benutzen, um z.B. den Inhalt des Pfades anzeigen zu lassen.
Ordner = "D:Test"
Set fso = CreateObject("Scripting.FileSystemObject")
Set Fld = fso.GetFolder(Ordner)
eingabe = inputbox()
Set Fld = fso.GetFolder("eingabe")
Hier z.B. ein kleiner Script von mir, wo auch die Inputbox benutzt wird und die dort getätigte Eingabe weiterverarbeitet wird.
'**********************************************************************
'* Windows Host Script --- LinsLst.vbs *
'* Suche in der Batsys Logdatei und Auslisten von Zeile X bis Y *
'**********************************************************************
'* V 1.0 (RP) Ersterstellung 26.01.2000 *
'* V 1.1 (RP) Anfang Ende Handling vereinfacht 04.06.2002 *
'**********************************************************************
Const ForReading = 1
Const ForWriting = 2
cr = CHR(13)
flag = 0
Version = "V1.1"
trenn = "/"
'******************************
'* Error-Routine einschalten *
'******************************
on error resume next
'*****************************************************
'aktuelles Datum ermitteln und an Variable übergeben *
'*************************************************** *
Tag = Day(Date)
if len(Tag) < 2 then Tag = 0 & Tag
Monat = Month(Date)
if len(Monat) < 2 then Monat = 0 & Monat
JahrK = Right(Year(Date),2)
JahrL = Year(Date)
WoTag = Weekday(Date)
Datum = Tag & Monat & JahrK
DatumL = Tag & Monat & JahrL
'***************************
'Benutzereingabe abfragen *
'***************************
Eingabe = "Eingabe Laufdatum in der Form TTMMJJ " & cr & "Return = " & Datum & cr & "E = Exit"
Titel = "BatsysLog LineList " & Version
Ausgabe = InputBox(Eingabe,Titel)
if Ausgabe <> "E" and Ausgabe <> "e" then
if Ausgabe <> "" then
Datum = Ausgabe
end if
Eingabe = "Eingabe der Suchzeilen von bis in der Form anfang/ende" & cr & "Nur anfang = anfang + 500 !!"
search = Inputbox(Eingabe,Titel)
if search = "" then
msgbox("Eingabe leider Falsch !" & cr & "Routine endet ")
WScript.Quit()
end if
'*****************************
'Benutzereingabe formatieren *
'*****************************
clen = len(search)
counter = InStr(1,search,trenn,vbBinareCompare)
lineb = left(search,counter - 1)
lineb = lineb - 1 + 1
if counter = 0 then
lineb = search
lineb = lineb - 1 + 1
linee = lineb + 502
else
linee = right(search,clen - counter)
linee = linee + 2
end if
if linee = 0 then
msgbox("Eingabe leider Falsch !" & cr & "Routine endet ")
WScript.Quit()
end if
'*******************************
'* Define Source and Target *
'*******************************
Source = "\\tgt_dc1\d\ftpdata\lg4-" & Datum & ".txt"
Target = "c:\LineLst.txt"
'*******************************
'* Filesystem Object *
'*******************************
Set fs = CreateObject("Scripting.FileSystemObject")
'*******************************
'* Shellsystem Object *
'*******************************
Set sh = CreateObject("WScript.Shell")
if (fs.FileExists (Source)) then
'*********************************
'* Files for Read and Write open *
'*********************************
set fo = fs.OpenTextFile(Source,ForReading, true)
set fw = fs.OpenTextFile(Target,ForWriting, true)
'*******************************
'* Main *
'*******************************
Text = "Ausgabe der Zeilen " & lineb & " bis " & linee - 2 & " aus dem Batsysprotokoll vom " & DatumL
fw.WriteLine (Text)
TexT = "Siehe Batsys-Protokoll unter $DATA44.BATLOG.LG" & Datum & cr
fw.WriteLine (Text)
do while fo.AtEndOfStream <> true
sstring = fo.ReadLine
if fo.Line > lineb and fo.Line < linee then
wstring = (fo.Line -1) & " ... " & sstring
fw.WriteLine (wstring)
end if
loop
ret = sh.run (Target)
end if
end if
'Script verlassen
'****************
WScript.Quit()
'************************************* Ende der Routine ******************
Verfolge die Variable search
Lieber REPI.
So, Dank Deines Tips funktioniert das Ganze.
Also nicht Ordner= "Eingabe" oder Ordner = & Eingabe
sondern
Ordner = Eingabe . Ist ja ganz einfach, wenn man's kann.
Aber für 'nen Laien.....
Danke & Grüsse
apoklaypsenow!