标题: [文件操作] 【已解决】批处理“打开文件”命令没有执行? [打印本页]
作者: cyb233 时间: 2019-2-12 16:37 标题: 【已解决】批处理“打开文件”命令没有执行?
本帖最后由 cyb233 于 2019-2-14 17:43 编辑
谁帮我看看这句话里“打开文件”命令为什么没有执行?
这句话提出来放进去都试过了,而且单独运行打开文件是正常的。- If exist %USERPROFILE%\desktop\ABC.lnk (xcopy /y /c /h /r "%USERPROFILE%\desktop\ABC.lnk" "%~dp0" && del /q/f "%userprofile%\desktop\ABC.lnk" && start %~dp0ABC.lnk ) else ( echo 失败 )
复制代码
作者: Batcher 时间: 2019-2-12 19:16
- if exist "%USERPROFILE%\desktop\ABC.lnk" (
- xcopy /y /c /h /r "%USERPROFILE%\desktop\ABC.lnk" "%~dp0"
- del /q /f "%userprofile%\desktop\ABC.lnk"
- start "" "%~dp0ABC.lnk"
- ) else (
- echo 失败
- )
复制代码
代码保存为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat
这样可以看到详细的报错信息或者线索
作者: cyb233 时间: 2019-2-12 22:44
回复 2# Batcher
单独运行没有问题,但是合起来又不行了,我前面紧跟的是一个调用vbs创建快捷方式- @echo off
- set "FileName=ABC.exe"
- echo 正在搜索,请稍后...
- for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
- if exist %%a:\ (
- pushd %%a:\
- for /r %%b in (*%FileName%) do (
- if /i "%%~nxb" equ "%FileName%" (
- echo,%%b
- set way=%%b
- goto :deal
- )
- )
- popd
- )
- )
- :deal
- @echo off
- ::设置程序或文件的完整路径(必选)
- set Program=%way%
- ::设置快捷方式名称(必选)
- set LnkName=ABC
- ::设置程序的工作路径,一般为程序主目录,此项若留空,脚本将自行分析路径
- set WorkDir=
- ::设置快捷方式显示的说明(可选)
- set Desc=steamcommunity_302.exe
- if not defined WorkDir call:GetWorkDir "%Program%"
- (echo Set WshShell=CreateObject("WScript.Shell"^)
- echo strDesKtop=WshShell.SpecialFolders("DesKtop"^)
- echo Set oShellLink=WshShell.CreateShortcut(strDesKtop^&"\%LnkName%.lnk"^)
- echo oShellLink.TargetPath="%Program%"
- echo oShellLink.WorkingDirectory="%WorkDir%"
- echo oShellLink.WindowStyle=1
- echo oShellLink.Description="%Desc%"
- echo oShellLink.Save)>makelnk.vbs
- echo 桌面快捷方式创建成功!
- makelnk.vbs
- del /f /q makelnk.vbs
- goto :open
-
- :none
- goto :eof
- :GetWorkDir
- set WorkDir=%~dp1
- set WorkDir=%WorkDir:~,-1%
- goto :eof
-
- :open
- if exist "%USERPROFILE%\desktop\ABC.lnk" (
- xcopy /y /c /h /r "%USERPROFILE%\desktop\ABC.lnk" "%~dp0"
- del /q /f "%userprofile%\desktop\ABC.lnk"
- start "" "%~dp0ABC.lnk"
- ) else (
- echo 失败
- )
复制代码
作者: Batcher 时间: 2019-2-12 23:02
回复 3# cyb233
37行改成这样试试:
cscript //nologo makelnk.vbs
作者: cyb233 时间: 2019-2-12 23:13
本帖最后由 cyb233 于 2019-2-12 23:36 编辑
回复 4# Batcher
并没有成功,命令前有一句命令确定快捷方式是否存在是可以正常运行的,我尝试用goto直接返回这一命令却也是无法执行打开命令,但是整段取出却运行成功了。。。
作者: Batcher 时间: 2019-2-12 23:40
回复 5# cyb233
把 @echo off 删掉
代码保存为 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat
这样可以看到详细的报错信息或者线索
作者: cyb233 时间: 2019-2-12 23:58
本帖最后由 cyb233 于 2019-2-13 01:57 编辑
回复 6# Batcher
emmm大部分情况就直接被跳过了,完全没有对应回显,多次运行只有一次提示“另一个程序正在使用此文件,进程无法访问。”
我的整个批处理的结构是:
1.前面其他命令 正常
2.判断是否存在快捷方式 正常
存在→打开快捷方式→结束
不存在→3.
3.创建快捷方式 正常
4.判断存在然后打开快捷方式 未运行
3.→goto→2. 同样未运行
作者: Batcher 时间: 2019-2-13 08:49
回复 7# cyb233
把 @echo off 删掉
代码保存为 C:\test.bat
不要双击执行 C:\test.bat
打开一个CMD窗口,执行命令:
C:\test.bat
把CMD窗口里面显示的内容发出来我看一下
怎样把CMD窗口里的结果复制出来?
http://bbs.bathome.net/thread-3473-1-1.html
作者: cyb233 时间: 2019-2-13 09:37
回复 8# Batcher
我完整运行了一遍:
Microsoft Windows [版本 10.0.16299.15]
(c) 2017 Microsoft Corporation。保留所有权利。
C:\Users\holypressure>D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用\2未加入的功能\#测试用.bat
C:\Users\holypressure>TITLE hosts写入、端口占用
C:\Users\holypressure>color 17
C:\Users\holypressure>set choice=请输入命令并回车,从头开始按"r",退出按"q",重启系统按"s":
C:\Users\holypressure>echo.
C:\Users\holypressure>echo 欢迎使用hosts写入、端口占用
欢迎使用hosts写入、端口占用
C:\Users\holypressure>echo.
C:\Users\holypressure>echo 如果执行失败请右键管理员打开
如果执行失败请右键管理员打开
C:\Users\holypressure>echo.
C:\Users\holypressure>echo. ====== https://steamcn.com/t461062-1-1 ======
====== https://steamcn.com/t461062-1-1 ======
C:\Users\holypressure>echo. 命令1: 查看端口占用(非系统进程(PID=4)请使用任务管理器关闭或"taskkill /pid 对应PID -t -f")
命令1: 查看端口占用(非系统进程(PID=4)请使用任务管理器关闭或"taskkill /pid 对应PID -t -f")
C:\Users\holypressure>echo. 命令2:hosts写入问题及刷新DNS缓存(如果hosts写入失败有可能是安全软件自动阻止)
命令2:hosts写入问题及刷新DNS缓存(如果hosts写入失败有可能是安全软件自动阻止)
C:\Users\holypressure>echo. 命令3:VMware虚拟机服务的vmware-hostd.exe等自动启动和停止(443端口)
命令3:VMware虚拟机服务的vmware-hostd.exe等自动启动和停止(443端口)
C:\Users\holypressure>echo. 命令4: 解决端口被一些system服务占用
命令4: 解决端口被一些system服务占用
C:\Users\holypressure>echo. 命令5:查看本地网络配置
命令5:查看本地网络配置
C:\Users\holypressure>echo. 命令6:打开steam控制台/开发者模式
命令6:打开steam控制台/开发者模式
C:\Users\holypressure>echo. =============================================
=============================================
C:\Users\holypressure>echo 请输入命令并回车,从头开始按"r",退出按"q",重启系统按"s":
请输入命令并回车,从头开始按"r",退出按"q",重启系统按"s":
C:\Users\holypressure>echo.
C:\Users\holypressure>choice /c 12345rsq
[1,2,3,4,5,R,S,Q]?Q
C:\Users\holypressure>if 8 == 8 (goto :end )
C:\Users\holypressure>echo.
C:\Users\holypressure>echo.
C:\Users\holypressure>echo 是否打开steamcommunity_302.exe?
是否打开steamcommunity_302.exe?
C:\Users\holypressure>echo 请选择您的版本
请选择您的版本
C:\Users\holypressure>echo (1:V9.5 2:V9.4 3:V9.3 q:退出)
(1:V9.5 2:V9.4 3:V9.3 q:退出)
C:\Users\holypressure>echo.
C:\Users\holypressure>choice /c 123q
[1,2,3,Q]?1
C:\Users\holypressure>if 1 == 4 (goto :no )
C:\Users\holypressure>if 1 == 3 (goto :v9.3 )
C:\Users\holypressure>if 1 == 2 (goto :v9.4 )
C:\Users\holypressure>if 1 == 1 (goto :v9.5 )
C:\Users\holypressure>If exist "D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\S_302_V9.5.lnk" (Start "" "D:\#Important重要\#CSDN更新!!!\hosts写入、端口占 用超级整合版\2未加入的功能\S_302_V9.5.lnk" & goto no ) else (Goto second )
C:\Users\holypressure>If exist "D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\steamcommunity_302_V9.5.exe" (Start "D:\#Important重要\#CSDN更新!!!\hosts写 入、端口占用超级整合版\2未加入的功能\steamcommunity_302_V9.5.exe" & goto no ) else (Goto thrid )
C:\Users\holypressure>If exist "D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\steamcommunity_302_V9.5.lnk" (Start "" "D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\steamcommunity_302_V9.5.lnk" & goto no ) else (Goto forth )
C:\Users\holypressure>If exist "D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\steamcommunity_302_V9.5.exe - 快捷方式.lnk" (Start "" "D:\#Important重要\#CSDN 更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\steamcommunity_302_V9.5.exe - 快捷方式.lnk" & goto no ) else (echo 首次启动会创建快捷方式 & Goto find )
首次启动会创建快捷方式
C:\Users\holypressure>set "FileName=steamcommunity_302_V9.5.exe"
C:\Users\holypressure>echo 正在搜索,请稍后...
正在搜索,请稍后...
C:\Users\holypressure>for %a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (if exist %a:\ (
pushd %a:\
for /R %b in (*steamcommunity_302_V9.5.exe) do (if /I "%~nxb" EQU "steamcommunity_302_V9.5.exe" (
echo,%b
set way=%b
goto :deal
) )
popd
) )
C:\Users\holypressure>(if exist C:\ (
pushd C:\
for /R %b in (*steamcommunity_302_V9.5.exe) do (if /I "%~nxb" EQU "steamcommunity_302_V9.5.exe" (
echo,%b
set way=%b
goto :deal
) )
popd
) )
C:\>(if /I "steamcommunity_302_V9.5.exe" EQU "steamcommunity_302_V9.5.exe" (
echo,C:\Users\holypressure\Downloads\steamcommunity_302_V9.5\steamcommunity_302_V9.5.exe
set way=C:\Users\holypressure\Downloads\steamcommunity_302_V9.5\steamcommunity_302_V9.5.exe
goto :deal
) )
C:\Users\holypressure\Downloads\steamcommunity_302_V9.5\steamcommunity_302_V9.5.exe
C:\>set Program=C:\Users\holypressure\Downloads\steamcommunity_302_V9.5\steamcommunity_302_V9.5.exe
C:\>set LnkName=S_302_V9.5
C:\>set WorkDir=
C:\>set Desc=steamcommunity_302.exe
C:\>if not defined WorkDir call:GetWorkDir "C:\Users\holypressure\Downloads\steamcommunity_302_V9.5\steamcommunity_302_V9.5.exe"
C:\>set WorkDir=C:\Users\holypressure\Downloads\steamcommunity_302_V9.5\
C:\>set WorkDir=C:\Users\holypressure\Downloads\steamcommunity_302_V9.5
C:\>goto :eof
C:\>(
echo Set WshShell=CreateObject("WScript.Shell")
echo strDesKtop=WshShell.SpecialFolders("DesKtop")
echo Set oShellLink=WshShell.CreateShortcut(strDesKtop&"\S_302_V9.5.lnk")
echo oShellLink.TargetPath="C:\Users\holypressure\Downloads\steamcommunity_302_V9.5\steamcommunity_302_V9.5.exe"
echo oShellLink.WorkingDirectory="C:\Users\holypressure\Downloads\steamcommunity_302_V9.5"
echo oShellLink.WindowStyle=1
echo oShellLink.Description="steamcommunity_302.exe"
echo oShellLink.Save
) 1>makelnk.vbs
C:\>echo 桌面快捷方式创建成功!
桌面快捷方式创建成功!
C:\>cscript //nologo makelnk.vbs
C:\>del /f /q makelnk.vbs
C:\>goto pen
C:\>if exist "C:\Users\holypressure\desktop\S_302_V9.5.lnk" (
xcopy /y /c /h /r "C:\Users\holypressure\desktop\S_302_V9.5.lnk" "D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\"
del /q /f "C:\Users\holypressure\desktop\S_302_V9.5.lnk"
start "" "D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\S_302_V9.5.lnk"
) else (echo 失败 )
C:\Users\holypressure\desktop\S_302_V9.5.lnk
复制了 1 个文件
C:\>goto :no
C:\>pause
请按任意键继续. . .
作者: Batcher 时间: 2019-2-13 13:53
回复 9# cyb233
D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\
文件夹下有没有S_302_V9.5.lnk这个文件?直接双击这个lnk文件能打开吗?
start "" "D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\S_302_V9.5.lnk"
单独执行这个命令能成功打开快捷方式是吗?
作者: cyb233 时间: 2019-2-13 15:26
本帖最后由 cyb233 于 2019-2-14 17:42 编辑
回复 10# Batcher
在顺序执行复制后文件夹下有S_302_V9.5.lnk这个文件,直接双击这个lnk文件能打开。
start "" "D:\#Important重要\#CSDN更新!!!\hosts写入、端口占用超级整合版\2未加入的功能\S_302_V9.5.lnk"
单独执行这个命令能成功打开快捷方式。
这是完整的批处理
[attach]11796[/attach]
作者: cyb233 时间: 2019-2-14 01:15
回复 10# Batcher
会不会是外部问题?我刚才弄了会虚拟机,现在创建快捷方式之后的打开正常了,创建之前前面又跳过打开命令了???
作者: cyb233 时间: 2019-2-14 17:42
回复 10# Batcher
已解决,电脑问题(不过还是不清楚原因),虚拟机内运行完全正常。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |