Meine Registrierung hier ist ein starkes Zeugnis für die ausgezeichneten Antworten, die ich hier zuvor gefunden habe. Ich hoffe, jemand kann mir helfen, was sich anfühlt, als sollte es ein einfaches Problem sein, wenn nicht, fürchte ich um schnell zunehmende Kahlheit.hta mit vbscript - Pfade und anderen Text mit Leerzeichen, als Variablen dargestellt, in einer anderen Codezeile
Ich habe eine HTA-Datei erstellt Dateioperationen perfom, Umbenennen, Kopieren, zu dem Zeitpunkt hinzugefügt, usw.
Mein Problem ist, dass ich mehrere Variablen, die gleich gesetzt sind Pfade in Datei, die Leerzeichen enthalten. Andere Variablen werden auf Benutzereingaben gesetzt, die Leerzeichen enthalten. Diese Variablen werden dann in anderen Codezeilen verwendet. Aber diese anderen Linien brechen, wenn sie den Raum in der "erweiterten" Variablen berühren.
Zum Beispiel, hier ist eine Zeile insbesondere treibt mich an der Wand.
Sub makemp3
If mp3radio(0).Checked Then
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd.exe /c " &lameexe& " " &defaultpathfile& " " &sermonmp3folder& "\" &newfile& ".mp3"
Else
End If
End Sub
Im obigen Fall werden die Variablen am Anfang des Skriptblocks zu ...
lameexe="D:\LAME\lame3.99.5-libsndfile\lame.exe"
defaultpathfile = sermonflacfolder&"\"&defaultflac
sermonmp3folder = "D:\SermonMP3"
newfile = datebox.value&"_"& titlebox.value
gesetzt Die databox von einem Unter poplulated ist ...
'pouplate input boxes with variables as default text
'==============================================
sub Window_onload
Set WshShell = CreateObject("WScript.Shell")
Set ObjEnv = WshShell.Environment("Process")
datebox.value = calcdate
end sub
calcdate, die wiederum von einem anderen Unter erstellt ...
'setup and perform date calculations
'======================================
days=DatePart("d", now)
monthdig=DatePart("m", now)
years=DatePart("yyyy", now)
amps=Hour(now)
If monthdig <10 Then months="0"&monthdig Else months=monthdig
If amps <15 Then apm="am" Else apm="pm"
calcdate = years&"_"&months&"_"&days&"_"&apm
titlebox ist derzeit nur eine Benutzereingabe ... der erwartete Eingang wäre ähnlich
What are we here for
oder
Rev Phillip Smith
In der ganzen Lesung ich online gemacht haben, ist es etwas, ich bin einfach nicht Verständnis über das Entkommen von Anführungszeichen, doppelten Anführungszeichen und chr (34).
Diese Seite scheint hoffnungsvoll, aber ich konnte es nicht mit den Variablen in meinem Skript arbeiten lassen.
Auch war diese Seite die verbal über das Thema, aber noch hat es zeigen nicht über Variable, die selbst keine Leerzeichen haben, aber die Saite in ihnen tun.
groups.google.com/group/microsoft.public.scripting.vbscript/browse_thread/thread/2ca422f55628ea5e
ich alle aus Gehirn Macht bin ... Bitte helfen. Danke, David
<script language="VBScript">
'
'
'deleteoldreapertemp subroutine adapted from:
'http://groups.google.com/group/microsoft.public.scripting.wsh/msg/14df6623fc552446
'
'
'explaination of variables...
'
'windowwidth... the desired width of the script window
'windowlength... the desired length of the script window
'sermonflacfolder... the desired location reaper renders the sermon file to
'defaultflac... this is the name used when the sermon file is rendered
'calcdate... uses date variables to create the default flac file name
'defaultpathfile... a shortcut to use intead of sermonflacfolder&"\"&defaultflac
'tempdir... where reaper stores its temp files
'killdate... files older than this value will be deleted from reaper temp directory
'Manually set variables
'=================================
windowwidth = 400
windowlength = 500
sermonflacfolder= "D:\SermonFLAC"
defaultflac="test.flac"
defaultpathfile = sermonflacfolder&"\"&defaultflac
tempdir = "D:\reaper temp dir"
sermonmp3folder = "D:\SermonMP3"
lameexe="D:\LAME\lame3.99.5-libsndfile\lame.exe"
killdaysold = 14
'setup and perform date calculations
'======================================
days=DatePart("d", now)
monthdig=DatePart("m", now)
years=DatePart("yyyy", now)
amps=Hour(now)
If monthdig <10 Then months="0"&monthdig Else months=monthdig
If amps <15 Then apm="am" Else apm="pm"
calcdate = years&"_"&months&"_"&days&"_"&apm
killdate = date() &" - "& killdaysold
'resize script window before it is drawn... avoids flicker
'==========================================
Sub resizewindow
window.resizeTo windowwidth,windowlength
end Sub
resizewindow()
'position script window at center of screen
'============================================
sub centerwindow
screenWidth = Document.ParentWindow.Screen.AvailWidth
screenHeight = Document.ParentWindow.Screen.AvailHeight
posLeft = (screenWidth - windowwidth)/2
posTop = (screenHeight - windowlength)/2
'move to centerscreen
window.moveTo posLeft, posTop
end sub
centerwindow()
'pouplate input boxes with variables as default text
'==============================================
sub Window_onload
Set WshShell = CreateObject("WScript.Shell")
Set ObjEnv = WshShell.Environment("Process")
datebox.value = calcdate
end sub
</script>
<head>
<title>HTA Test</title>
<HTA:APPLICATION
APPLICATIONNAME="RENAMER"
SCROLL="NO">
</head>
<body>
<body bgcolor=c0c0c0>
<!text boxes setup here>
<!=====================================================================>
<p>
Accept calculated date and service (am or pm)<br>
or input correct date and service<br>
(yyyy_mm_dd_am)<br>
<input type="text" name="datebox" onclick="datebox.value=''">
<p>
<br>
Input sermon title <br>
<input type="text" name="titlebox" onfocus="titlebox.value=''">
<input type="button" name="examplesbutton" value="Examples" onClick="examplesclick" style="float: right;">
<br>
<br>
Create archive MP3?
<br>
Yes<input type="radio" name="mp3Radio" value="1" checked="true">
No<input type="radio" name="mp3Radio" value="2">
<p>
Shutdown computer when script finishes?
<br>
Yes<input type="radio" name="shutdownRadio" value="1" checked="true">
No<input type="radio" name="shutdownRadio" value="2" >
<br>
<br>
<br>
<input type="button" name="settingsbutton" value="Settings" onClick="settingsclick" style="float: left;">
<input type="button" name="runbutton" value="Run Script" onClick="MASTERSUB" style="float: right;">
<p>
</body>
<script language="VBScript">
'CHECKING "DOES DEFAULT SERMON FILE EXIST?"
'=========================================
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(defaultpathfile)) Then
Else
Msgbox "Default sermon file not found at:" & vbnewline & sermonflacfolder & "\" & defaultflac & vbnewline & vbnewline & "Check settings in Reaper (File\Render menu)" & vbnewline & vbnewline & "Click Ok to exit script"
exitscript()
End If
Sub MASTERSUB
lastchance
deleteoldreapertemp
rename
makemp3
checkfornewflac
checkfornewmp3
deletedefaultflac
shutdownsub
End Sub
'MASTERSUB runs all the contained sub subs
'=====================================================
'=====================================================
'=====================================================
dim shutdownverify
dim newfile
dim newflacfound
dim newmp3found
Sub Delay (seconds)
Dim wshShell
Set wshShell = CreateObject("WScript.Shell")
wshShell.Run "ping -n " & (seconds + 1) & " 127.0.0.1", 0, True
Set wshShell = Nothing
End Sub
'last chance to abort shutdown
'=====================================================
Sub lastchance
If shutdownradio(0).Checked Then
lastchanceanswer = _
Msgbox("Computer will shutdown when script finishes", _
vbYesNo, "Last chance to abort shutdown")
If lastchanceanswer = vbYes Then
shutdownverify = "yes"
Else
shutdownverify = "no"
End If
Else
End If
End Sub
'attempt to rename defaultflac
'=======================================================
Sub rename
newfile = datebox.value&"_"& titlebox.value
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile defaultpathfile , sermonflacfolder&"\"&newfile&".flac"
End Sub
'encode an mp3 version of the defaultflac file (only if the "yes" mp3 radio button is checked)
'===============================================
Sub makemp3
If mp3radio(0).Checked Then
Set objShell = CreateObject("Wscript.Shell")
objShell.Run "cmd.exe /c " &lameexe& " " &defaultpathfile& " " &sermonmp3folder& "\" &newfile& ".mp3"
Else
End If
End Sub
'check if new flac is was created successfully
'===============================================
Sub checkfornewflac
Delay 10
Dim count
count = 1
Do
If (fso.FileExists(sermonflacfolder&"\"&datebox.value&"_"&titlebox.value&".flac")) Then
newflacfound = "yes"
'msgbox "new flac file found flag set to "&newflacfound
Exit Sub
Else
count=count+1
If count >4 Then
newflacfound = "no"
'msgbox "new flac not found, flag set to "&newflacfound
Exit Sub
Else
End If
Delay 10
End If
Loop
End Sub
'check if mp3 was created sucessfully
'===============================================
Sub checkfornewmp3
Dim count
count = 1
If mp3radio(0).Checked Then
Do
If (fso.FileExists(sermonmp3folder&"\" & newfile & ".mp3")) Then
newmp3found = "yes"
'msgbox "new mp3 file found flag set to "&newmp3found
Exit Sub
Else
count=count+1
If count >4 Then
newmp3found = "no"
'msgbox "new mp3 not found, flag set to "&newmp3found
Exit Sub
Else
End If
Delay 10
End If
Loop
End If
End Sub
'Delete default file
'=============================================
Sub deletedefaultflac
Delay 90
If newflacfound = "yes" Then
If newmp3found = "yes" Then
set objFSO = createobject("Scripting.FileSystemObject")
objFSO.DeleteFile defaultpathfile
Else
set objFSO = createobject("Scripting.FileSystemObject")
objFSO.MoveFile defaultpathfile , sermonflacfolder&"\"& "aaERROR" &newfile&".flac"
End If
Else
set objFSO = createobject("Scripting.FileSystemObject")
objFSO.MoveFile defaultpathfile , sermonflacfolder&"\"& "00000_ERROR_" &newfile&".flac"
End If
End Sub
'Delete old reaper temp files
'===========================================
Sub deleteoldreapertemp
'msgbox "starting 1sub"
arFiles = Array()
set fso = createobject("scripting.filesystemobject")
selectfiles path, killdate, arFiles, true
nDeleted = 0
for n = 0 to ubound(arFiles)
'=================================================
' Files deleted via FSO methods do *NOT* go to the recycle bin!!!
'=================================================
on error resume next 'in case of 'in use' files...
arFiles(n).delete true
if err.number <> 0 then
wscript.echo "Unable to delete: " & arFiles(n).path
else
nDeleted = nDeleted + 1
end if
on error goto 0
next
'msgbox nDeleted & " of " & ubound(arFiles)+1 _
' & " eligible files were deleted"
'msgbox "end 1 sub"
End Sub
sub selectfiles(sPath,vKillDate,arFilesToKill,bIncludeSubFolders)
set folder = fso.getfolder(tempdir)
set files = folder.files
'msgbox "startng 2 sub"
on error resume next
for each file in files
' uses error trapping around access to the
' Date property just to be safe
'
dtlastmodified = null
on error resume Next
dtlastmodified = file.datelastmodified
on error goto 0
if not isnull(dtlastmodified) Then
if dtlastmodified < vKillDate then
count = ubound(arFilesToKill) + 1
redim preserve arFilesToKill(count)
set arFilesToKill(count) = file
end if
end if
next
if bIncludeSubFolders then
for each fldr in folder.subfolders
SelectFiles fldr.path,vKillDate,arFilesToKill,true
next
end if
end sub
'shutdown computer (only if the "yes" shutdown radio button is checked)
'=======================================================================
Sub shutdownsub
If shutdownverify= "yes" Then
Set objShell = CreateObject("Wscript.Shell")
'msgbox "shutdown ran!"
objShell.Run "shutdown.exe -s -t 5"
Else
exitscript
End If
End Sub
'=====================================================
'=====================================================
'=====================================================
'clicking the "settings" button runs this routine
'===================================================
Sub settingsclick
Msgbox "Default sermon filename is set to: " & defaultflac & vbnewline & "Storage area for sermon flacs is set to: " & sermonflacfolder & vbnewline & "Storage location for sermon mp3's set to: " & sermonmp3folder & vbnewline & "Path to Lame.exe (with flac support) set to: " & lameexe & vbnewline
End Sub
'clicking the "Examples" button runs this routine
'===================================
Sub examplesclick
Msgbox "Capitalize the first letter of the sermon title" & vbNewLine & "Capitalize the names of God" & vbNewLine & "For guest speaker, use their name as the title" & vbNewLine & "Here are some examples:"& vbNewLine & vbNewLine &"What hath God wrought"& vbNewLine & "The ABCs of life" & vbNewLine & "Dr Jimmy Stewart"
End Sub
'if no defaultflac file found, exit script
'=========================================
Sub exitscript
window.close
End Sub
</script>
Was meinen Sie, wenn Sie sagen, dass einige Zeilen Code "brechen"? VBScript hat kein Problem mit Leerzeichen in String-Variablen: http://jsfiddle.net/74zKp/1/ – gilly3
Wenn Sie das hta ausführen, wird es in die Zeile mit dem Durcheinander von Anführungszeichen kommen und Dinge wie "expected statement" sagen. Oder mit anderen Variationen wird es lame.exe starten, aber lame wird brechen und sagen, dass es die Datei "2012_03_23_am_" nicht finden kann, weil es den Rest der Zeile abgeschnitten hat (der Teil, der den "Predigertitel geliefert hätte. m3 "Teil). Die Fehler sind viele, ich kann es laufen lassen und die genauen Fehler posten, aber sie alle stammen von meinem Unverständnis, wie man meine Pfadvariablen in der lame.exe erscheinen lässt, als ob ich sie in rohe eingegeben hatte. – David