一、变量赋值时遇到“无效数字。”的错误
参考代码如下:
@echo off
set /A second=%time:~6,2%
echo %second%
pause
使用SET /A expression
形式的命令给变量赋值时,可能遇到如下错误:
无效数字。数字常数只能是十进制(17),十六位进制(0x11)或八进制(021)。
原因是:SET /A expression
命令给变量赋值时,会把 0 开头的字符串认为是八进制的数。直接截取时间字符串中的秒数给变量赋值时,如果时间是08或09秒就会报错,因为八进制中没有 8 和 9。采用如下形式可以解决问题:
@echo off
set /a second=1%time:~6,2% - 100
echo %second%
pause
二、批处理中使用消息框
@echo off
set title=演示
set message=运行结束!
start mshta vbscript:msgbox("%message%",64,"%title%")(window.close)
三、使用“文件选择对话框”选择文件
<!-- :
@echo off
set filename=
for /f "delims=" %%a in ('mshta "%~f0"') do (
set filename=%%a
echo %%a
)
pause & exit /b
-->
<input type=file id=f>
<script>
f.click();
new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(f.value);
close();
</script>
四、使用“文件夹选择对话框”选择文件夹
<!-- :
@echo off
set foldername=
for /f "delims=" %%a in ('mshta "%~f0"') do (
set foldername=%%a
echo %%a
)
mshta vbscript:msgbox("%foldername%",64,"选择的文件夹")(window.close)
pause & exit /b
-->
<script>
var Shell = new ActiveXObject("Shell.Application");
var Folder = Shell.BrowseForFolder(0, "请选择文件夹", 0x0101, 17);
if (Folder != null) {
Folder = Folder.items();
Folder = Folder.item();
Folder = Folder.Path;
new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Folder);
}
close();
</script>