【问题标题】:CMD - Batch - HTACMD - 批处理 - HTA
【发布时间】:2018-01-20 16:11:53
【问题描述】:

我对编码真的很陌生(我大约在 3 周前开始)我找到了 Robocopy 并编写了一个非常简单的批处理文件,该文件基本上从主目录复制一个文件夹,然后粘贴到 2 个目的地的子文件夹中我已指定何时启动批处理文件。

这看起来很乱,我一直在尝试 HTA 并尝试获取它,以便我可以将变量输入到 HTA 中,然后为我做其他所有事情。我在想这会比 CMD 窗口更好看。

我已经获得了一个简单版本的 HTA,稍后我将对其进行样式设置,但我只是不知道如何将变量传递到批处理文件中,或者是否有更好的方法来做到这一点。我已经阅读了很多关于这方面的帖子,但它们似乎都比我需要的复杂得多,最终我失败了。

我的批处理文件目前是

    CODE:

    set /p dest=Please enter destination: 
    robocopy "D:\MasterFolder\- Details" "E:\Sets\%dest%" /E /V /NP /R:10 /W:30 
    robocopy "D:\MasterFolder\- Details" "F:\%dest%" /E /V /NP /R:10 /W:30 

这确实工作得很好,但看起来不是很好,我希望使用 HTA 我可以摆脱第一行并在 GUI 中输入。到目前为止,我已经设法想出了以下内容,我只需要一些帮助就可以从 HTA 中获取变量并将其放入批处理文件中。或者如果有更好的方法可以实现这一点,请提供一些指导

<head>
<title>Folder Creator</title>

<HTA:APPLICATION 
APPLICATIONNAME="HTA Folder Creator"
SCROLL="no"
SINGLEINSTANCE="yes"
WINDOWSTATE="normal"
>

</head>

<script type="text/javascript">
window.resizeTo(400,200);
</script>

<body>
<label for="dest">Destination:</label>
<input type="text" id="dest">
<br><br>
<button onclick="closeHTA(true);">Create</button>
</body>

【问题讨论】:

标签: batch-file cmd hta


【解决方案1】:

这是一个将变量从 HTA 转换为批处理脚本的示例: Reply_from_HTA.bat

<!-- :: Batch section
@echo off
Title Pass variable from HTA to batch
for /F "delims=" %%a in ('mshta.exe "%~F0"') do set "HTAreply=%%a"
echo End of HTA window, reply from HTA GUI : "%HTAreply%"
Set "dest=%HTAreply%"
echo robocopy "D:\MasterFolder\- Details" "E:\Sets\%dest%" /E /V /NP /R:10 /W:30 
echo robocopy "D:\MasterFolder\- Details" "F:\%dest%" /E /V /NP /R:10 /W:30 
pause>nul
goto :EOF
-->
<HTML>
<HEAD>
<HTA:APPLICATION SCROLL="no" SYSMENU="no" >
<TITLE>HTA GUI Form</TITLE>
<SCRIPT language="Vbscript">
Sub window_onload()
       CenterWindow 200,150
       Focus
End Sub

Sub CenterWindow(x,y)
        window.resizeTo x, y
        iLeft = window.screen.availWidth/2 - x/2
        itop = window.screen.availHeight/2 - y/2
        window.moveTo ileft, itop
End Sub

Function closeHTA(reply)
   Set fso = CreateObject("Scripting.FileSystemObject")
   fso.GetStandardStream(1).WriteLine(reply)
   window.close()
End Function

Sub Focus()
    txt.Focus
End Sub
</SCRIPT>
</HEAD>
<BODY>
<center>
<label for="dest">Please enter destination</label>
<br>
<input type="text" id="txt">
<br><Input type="Submit" onclick="closeHTA(txt.value)" value="Submit"> 
</center>
</BODY>
</HTML>

【讨论】:

  • 谢谢,我明天会考虑把它改成这个
猜你喜欢
  • 2022-01-05
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
  • 2010-09-14
  • 2013-01-25
  • 1970-01-01
相关资源
最近更新 更多