标题: [文件操作] 已解决-bat文件拖入功能失效 [打印本页]
作者: cbbos 时间: 2024-10-19 15:17 标题: 已解决-bat文件拖入功能失效
本帖最后由 cbbos 于 2024-10-19 23:31 编辑
比如这个代码前段时间还能识别拖入文件路径,现在突然识别不到了,输出Input file not found- FPP "%~1" -o "%~dp1MOD.bin" > output.tmp
复制代码
作者: Batcher 时间: 2024-10-19 15:31
回复 1# cbbos - echo FPP "%~1" -o "%~dp1MOD.bin"
- pause
复制代码
代码修改成上面这个样子,按照你的方法执行,截图发出来看看。
如果需要上传截图,可以找个图床,例如:
http://bbs.bathome.net/thread-60985-1-1.html
作者: cbbos 时间: 2024-10-19 15:53
回复 2# Batcher
找了个简单的bat试了下- @echo off
- >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
- if '%errorlevel%' NEQ '0' (
- echo Requesting administrative privileges...
- goto UACPrompt
- ) else ( goto gotAdmin )
- :UACPrompt
- echo Set UAC = CreateObject("Shell.Application") > "%temp%\getadmin.vbs"
- echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
- "%temp%\getadmin.vbs"
- exit /B
- :gotAdmin
- if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
- pushd "%CD%"
- CD /D "%~dp0"
- echo LENV.exe "%~1" -decrypt
- pause
复制代码
输出
LENV.exe "" -decrypt
请按任意键继续. . .
我发现,现在所有使用%~1获取拖入文件路径的bat都使用不了了。
作者: Five66 时间: 2024-10-19 16:15
用vbs重新运行时没有带上参数??
作者: aloha20200628 时间: 2024-10-19 16:39
回复 3# cbbos
第9行代码改成如下一行试试...- echo UAC.ShellExecute "%~f0", "%~1", "", "runas", 1 >> "%temp%\getadmin.vbs"
复制代码
作者: cbbos 时间: 2024-10-19 16:59
本帖最后由 cbbos 于 2024-10-19 17:01 编辑
回复 4# Five66
回复 5# aloha20200628
这个是调用管理员的,使用绝对路径没问题。以前使用拖入文件也没问题,现在不知道怎么回事,所有使用%~1获取拖入文件路径的bat都使用不了了。
作者: 77七 时间: 2024-10-19 17:32
按站长2楼的代码,执行,看看有什么问题
作者: aloha20200628 时间: 2024-10-19 18:29
本帖最后由 aloha20200628 于 2024-10-19 18:35 编辑
回复 3# cbbos
用3楼的代码复盘一下整个流程》
首次运行批处时虽然拖入了 "%~1",但因当前批处未被提权故循行了 '提权' 流程,代码跑到第11行即退出了
退出前启动了用来‘提权’的vbs脚本
但临时写出的vbs代码中遗失了原先的 "%~1",故用vbs脚本二次重启批处时就没有了 "%~1",因此第16行代码中的 "%~1" 就成了空值 "" ...
5楼代码就是为此打个补丁,在临时写出的vbs代码中补上 "%~1" 。
另言之》若 LENV.exe "%~1" -decrypt 无须提权也能正常运行,楼主可用以下代码验证一下 "%~1" 是否还是空值- @echo off
- echo LENV.exe "%~1" -decrypt
- pause&exit/b
复制代码
作者: cbbos 时间: 2024-10-19 20:21
回复 7# 77七
3楼就是按站长的来的,还是获取不到
作者: cbbos 时间: 2024-10-19 20:25
本帖最后由 cbbos 于 2024-10-19 20:31 编辑
回复 8# aloha20200628
试了下,还真是这问题,不提权限就能正确获取到路径了。估计系统环境哪里出了问题,之前一直没问题
编辑:补上%~1后可以正确获取了,这是不是系统环境除了问题?之前没加上%~1也能正确获取路径。
作者: 77七 时间: 2024-10-19 21:11
回复 9# cbbos
所以你说的突然不能用了,是在添加了 获取管理员权限的代码 之后,那原因不是很明显吗?
获取管理员权限是用其它脚本启动批处理,其中如果没有接力传递参数,%~1是为空值的。
参考 WHY大佬的代码,改了一下
- @FLTMC>nul || PowerShell "Start-Process CMD -Args '/c', '\"\"%~f0\"', '\"%~1\"\"' -Verb RunAs" && exit /b
- @echo off
- cd /d "%~dp0"
- echo "%~1"
- pause
复制代码
作者: cbbos 时间: 2024-10-19 21:17
回复 11# 77七
不是添加之后,这个代码一直用了的。不明白怎么就突然用不了了
作者: Five66 时间: 2024-10-19 23:50
调用管理员的
跟
未调用管理员的
是不同的
之前能用或许原本就是管理员??
作者: cbbos 时间: 2024-10-20 10:06
回复 13# Five66
不清楚,我的每个bat基本都加了这个管理员代码,就是突然间全部失效了,只有使用绝对路径的还能用
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |