首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMD -批- HTA

CMD -批- HTA
EN

Stack Overflow用户
提问于 2018-01-20 16:11:53
回答 1查看 1.9K关注 0票数 0

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

这看起来很混乱,我一直在尝试HTA并尝试获取它,这样我就可以在HTA中输入变量,然后为我做其他的事情。我在想这比CMD的窗户更好看。

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

我的批处理文件当前

代码语言:javascript
复制
    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中获取变量并将其放入批处理文件中。或者一些指导,如果有更好的方法可以实现这一点

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2018-01-20 19:42:01

下面是一个从HTA到批处理脚本的变量的示例:Reply_from_HTA.bat

代码语言:javascript
复制
<!-- :: 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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48358249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档