首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将vbs变量写入批处理文件?

问如何将vbs变量写入批处理文件?
EN

Stack Overflow用户
提问于 2013-11-08 10:20:13
回答 1查看 1.3K关注 0票数 0

以下是代码:

代码语言:javascript
复制
Const MY_COMPUTER = &H11&
Const WINDOW_HANDLE = 0
Const OPTIONS = 0

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(MY_COMPUTER)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path

Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder _
(WINDOW_HANDLE, "Select a folder:", OPTIONS, strPath) 

If objFolder Is Nothing Then
Wscript.Quit
End If

Set objFolderItem = objFolder.Self
objPath = objFolderItem.Path

wscript.Echo objPath

现在这个部分开始工作了,现在我需要将"objPath“写成"file.bat”。在批处理文件中,它只是“回显objPath>>hello.txt”,但这似乎不适用于vbs!

有谁可以帮我?

批处理文件调用VBS文件,提示用户选择要复制的目录,然后选择要复制到的目录。然后,批处理文件自动复制第一个位置选择到第二个位置,每次计算机启动!就像备份系统一样!但只对一个特定的文件夹!谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2013-11-08 12:22:36

下面是我编写的一个浏览文件夹例程,它可以实现您想要的功能。您可以按原样或仅仅作为代码的引用来使用它。如果选择有效路径,则返回0;如果单击“取消”按钮,则返回1。

后面的所有内容都会进入批处理文件。

代码语言:javascript
复制
@Echo off
setlocal
Call :BrowseFolder "Choose Source folder" "C:\scripts\batch\" r
echo %r%
echo %errorlevel%
Call :BrowseFolder "Choose Destination folder" "C:\scripts\" r
echo %r%
echo %errorlevel%
cmd /k
Goto :EOF


:BrowseFolder
setlocal
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs% echo set sh=wscript.CreateObject("Shell.Application") 
>>%vbs% echo set f=sh.BrowseForFolder(0,%1,0,%2) 
>>%vbs% echo if typename(f)="Nothing" Then 
>>%vbs% echo   wscript.echo "Dialog Cancelled" 
>>%vbs% echo   wscript.Quit(1) 
>>%vbs% echo end if 
>>%vbs% echo set fs=f.Items():set fi=fs.Item() 
>>%vbs% echo p=fi.Path:wscript.echo p
for /f "tokens=*" %%a in ('cscript //nologo %vbs%') do set result=%%a
if exist %vbs% del /f /q %vbs%
if "%result%" EQU "Dialog Cancelled" (set a=1) else set a=0
endlocal & set %3=%result% & exit /b %a%

版本1-写出一个.cmd文件并调用它来设置环境变量。

代码语言:javascript
复制
:BrowseFolder
set Result=
set vbs="%temp%\_.vbs"
set cmd="%temp%\_.cmd"
for %%f in (%vbs% %cmd%) do if exist %%f del %%f
for %%g in ("vbs cmd") do if defined %%g set %%g=
>%vbs% echo set shell=WScript.CreateObject("Shell.Application") 
>>%vbs% echo set f=shell.BrowseForFolder(0,%1,0,%2) 
>>%vbs% echo if typename(f)="Nothing" Then  
>>%vbs% echo wscript.echo "set Result=Dialog Cancelled" 
>>%vbs% echo WScript.Quit(1)
>>%vbs% echo end if 
>>%vbs% echo set fs=f.Items():set fi=fs.Item() 
>>%vbs% echo p=fi.Path:wscript.echo "set Result=" ^& p
cscript //nologo %vbs% > %cmd%
for /f "delims=" %%a in (%cmd%) do %%a
for %%f in (%vbs% %cmd%) do if exist %%f del /f /q %%f
for %%g in ("vbs cmd") do if defined %%g set %%g=
goto :eof
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19856586

复制
相关文章

相似问题

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