【发布时间】:2023-12-22 20:50:01
【问题描述】:
好吧,我之前写过一些批处理文件,所以我对它们并不完全陌生,但这让我很困惑。我要做的是从批处理文件中运行 .exe 文件。这是批处理脚本:
@echo off
:start
setlocal EnableDelayedExpansion
cd "C:\Users\Zac\Dropbox\SoundCloud"
set n=0
for %%f in (*.html*) do (
set /A n+=1
set "file[!n!]=%%f"
)
set /A "rand=(n*%random%)/32768+1"
move "!file[%rand%]!" C:\Users\Zac\Temp
start "~dp0Link_Open.exe"
echo %time%
timeout 70 > NUL
echo %time%
goto start
所以据我了解,这会将随机的 .html 文件从一个目录移动到另一个目录,这很有效,我用过很多次,唯一的问题是“开始”命令,我不经常使用这个. “Link_Open.exe”与我的 .bat 位于同一文件夹中,但我尝试使用写入的完整目录运行它,我尝试过引用,没有引号,括号,没有括号,开始,开始,开始,调用,调用,调用,都不行,老是报同样的错误“找不到Link_Open.exe,你写对了吗?”
我能想到的唯一原因是它为什么不起作用,是 .exe 是用 AutoIT 编写然后编译的......但这不应该影响它吗?
运行批处理文件会导致随机文件被移动,然后出现错误,然后重复。
我做错了什么?
Ps:运行 Link_Open.exe 完成了它应该做的事情,所以那里没有错误,我唯一遇到的问题是用 .bat 打开它。
我对 Autoit 还是很陌生,但如果有人可以向我展示一个使用 Autoit 移动随机 .html 文件的脚本,我可以将这两个脚本组合在一起,不是吗?
【问题讨论】:
-
您是否尝试过使用
link_open.exe的完整路径?如果应用程序位于path上的任何目录中,那么它应该被执行。我相信有一些杂草丛生的反病毒系统会阻止应用程序的执行,直到它们得到特别授权。最好在批处理start之后包含一对假兔子耳朵 (""),因为第一个引用的参数可能会被用作 Windows 标题 - 但这里可能不是这种情况。需要准确知道可执行文件在哪里以及%~dp0在哪里(在批处理中显示 -echo %~dp0) -
@Zachary Wight 您的“start "~dp0Link_Open.exe"" 缺少 ~ 之前的 %
标签: batch-file call autoit