有阴也有阳 发表于 2017-9-16 10:51:19

一个打开文件夹的bat命令在系统中能够正常执行,在主板DOS中不能正常执行。

      一个打开文件夹的bat命令在系统中能够正常执行,在主板DOS中不能正常执行。

      打开bat所在驱动器里面的sysiso文件夹:

start %~d0\sysiso\


      在主板DOS中运行的报错如下:




      而在系统中则能正常执行:




      请高手指教,谢谢!!!

fjzjk 发表于 2017-9-16 10:59:14

dos里应该用cd来进入文件夹吧

nttwqz 发表于 2017-9-16 11:02:48

不要动不动就DOS,这个应该是PE下的命令提示符。

可以尝试

start "" %~d0\sysiso\

explorer.exe %~d0\sysiso\

有阴也有阳 发表于 2017-9-16 11:03:07

fjzjk 发表于 2017-9-16 10:59
dos里应该用cd来进入文件夹吧

改成:

cd %~d0\sysiso\


对吗?

音乐与电脑 发表于 2017-9-16 11:09:25

dos里又没有explorer 当然不能打开文件夹咯

有阴也有阳 发表于 2017-9-16 11:15:57

nttwqz 发表于 2017-9-16 11:02
不要动不动就DOS,这个应该是PE下的命令提示符。

可以尝试


      以上2条命令在系统下都可以成功执行,但在PE下的命令提示符中都无法执行。

nttwqz 发表于 2017-9-16 11:40:39

有阴也有阳 发表于 2017-9-16 11:15
以上2条命令在系统下都可以成功执行,但在PE下的命令提示符中都无法执行。

哦,忘了,还以为你已经编好批处理了呢

%~d0指的是批处理所在的分区盘符,cmd下面是输入是无效的!只能使用绝对路径!

还有个情况,我才你应该是这种情况!你的PE是原生的,不带explorer.exe,文件夹自然是无法打开的!!!所以该提示并没有错!!!!

窄口牛 发表于 2017-9-16 11:44:13

本帖最后由 窄口牛 于 2017-9-16 11:45 编辑

cd /d d:\sysiso

tools241 发表于 2017-9-16 12:18:25

@echo off
SET Var0=%0
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%
FOR /f "delims=" %%I in ("%Var0%") do Set TP=%%~dpI
SET TP=%TP:~0,-1%\
for /f "tokens=1,2 delims=:" %%i in ("%TP%") do set drive=%%i:
%drive%
for /f "tokens=1,2 delims=:" %%i in ("%TP%") do set directory=%%j
cd %directory%


start %~d0\sysiso\

tools241 发表于 2017-9-16 12:18:35

@echo off
SET Var0=%0
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%
FOR /f "delims=" %%I in ("%Var0%") do Set TP=%%~dpI
SET TP=%TP:~0,-1%\
for /f "tokens=1,2 delims=:" %%i in ("%TP%") do set drive=%%i:
%drive%
for /f "tokens=1,2 delims=:" %%i in ("%TP%") do set directory=%%j
cd %directory%


start %~d0\sysiso\

tools241 发表于 2017-9-16 12:20:41

本帖最后由 tools241 于 2017-9-16 19:13 编辑

@echo off
SET Var0=%0
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%
FOR /f "delims=" %%I in ("%Var0%") do Set TP=%%~dpI
SET TP=%TP:~0,-1%\
REM 上列4行的写法 "不论资料夹是否含空格" 皆适用
for /f "tokens=1,2 delims=:" %%i in ("%TP%") do set drive=%%i:
%drive%
for /f "tokens=1,2 delims=:" %%i in ("%TP%") do set directory=%%j
cd %directory%
REM 上列4行的写法在Windows以系统管理员身份执行时,可自 %WinDir%\sys????? 回到程式本身的正确位置

start %drive%\sysiso\

有阴也有阳 发表于 2017-9-16 12:42:32

tools241 发表于 2017-9-16 12:20
@echo off
SET Var0=%0
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%


      谢谢!还是相同的报错:

有阴也有阳 发表于 2017-9-16 12:43:54

nttwqz 发表于 2017-9-16 11:40
哦,忘了,还以为你已经编好批处理了呢

%~d0指的是批处理所在的分区盘符,cmd下面是输入是无效的!只 ...

是运行批处理,不是在PE的CMD下输入命令。

tools241 发表于 2017-9-16 12:45:25

本帖最后由 tools241 于 2017-9-16 19:13 编辑

有阴也有阳 发表于 2017-9-16 12:42
谢谢!还是相同的报错:
start 后面通常是 *.exe
改成


@echo off
SET Var0=%0
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%
FOR /f "delims=" %%I in ("%Var0%") do Set TP=%%~dpI
SET TP=%TP:~0,-1%\
REM 上列4行的写法 "不论资料夹是否含空格" 皆适用
for /f "tokens=1,2 delims=:" %%i in ("%TP%") do set drive=%%i:
%drive%
for /f "tokens=1,2 delims=:" %%i in ("%TP%") do set directory=%%j
cd %directory%
REM 上列4行的写法在Windows以系统管理员身份执行时,可自 %WinDir%\sys????? 回到程式本身的正确位置

cd %drive%\sysiso

邪恶海盗 发表于 2017-9-16 13:38:21

不能直接从当前文件夹访问其它文件夹,必需先切换到目标文件夹...

807979023 发表于 2017-9-16 14:09:09

换个pe吧,我这里03 7 8 都能运行批处理: start %~d0\sysiso


nttwqz 发表于 2017-9-16 14:35:36

807979023 发表于 2017-9-16 14:09
换个pe吧,我这里03 7 8 都能运行批处理: start %~d0\sysiso

我怀疑他的WinPE里面极有可能就没有explore,所以他这个如果是想通过start打开相关文件夹而不是在脚本里面切换到该文件夹根本就是做不到!!

窄口牛 发表于 2017-9-16 14:47:29

是的,所以我才用的命令。

nttwqz 发表于 2017-9-16 14:47:58

tools241 发表于 2017-9-16 12:20
@echo off
SET Var0=%0
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%


你能解释下你的批处理吗?

这个和下面的有何不同?
@explorer.exe %~d0

nttwqz 发表于 2017-9-16 14:56:14

邪恶海盗 发表于 2017-9-16 13:38
不能直接从当前文件夹访问其它文件夹,必需先切换到目标文件夹...

邪恶海盗 发表于 2017-9-16 15:23:47

nttwqz 发表于 2017-9-16 14:56


你这个是访问当前目录子目录,这是没问题的

nttwqz 发表于 2017-9-16 16:08:47

邪恶海盗 发表于 2017-9-16 15:23
你这个是访问当前目录子目录,这是没问题的

tools241 发表于 2017-9-16 19:17:57

nttwqz 发表于 2017-9-16 14:47
你能解释下你的批处理吗?

@echo off
SET Var0=%0
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%
FOR /f "delims=" %%I in ("%Var0%") do Set TP=%%~dpI
SET TP=%TP:~0,-1%\
REM 上列4行的写法 "不论文件夹是否含空格" 皆适用
for /f "tokens=1,2 delims=:" %%i in ("%TP%") do set drive=%%i:
%drive%
for /f "tokens=1,2 delims=:" %%i in ("%TP%") do set directory=%%j
cd %directory%
REM 上列4行的写法在Windows以系统管理员身份执行时,可自 %WinDir%\sys????? 回到程式本身的正确位置

____________________________________

本人打包了很多工具, 含添加到PE中的工具皆采用上列的写法以保万无一失
效率极致!简体/繁体 10PE16199x64 10PE15063x86 10PE15063x64影音上网版 ==>
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=385866

nttwqz 发表于 2017-9-16 20:55:53

tools241 发表于 2017-9-16 19:17
@echo off
SET Var0=%0
IF '^%Var0:~0,1%'=='^"' SET Var0=%Var0:~1,-1%


批处理在带有空格的路径下以管理员身份运行时,切换到本身所在目录???

pushd %~dp0\

一句搞定!

tools241 发表于 2017-9-16 21:22:37

本帖最后由 tools241 于 2017-9-16 21:37 编辑

nttwqz 发表于 2017-9-16 20:55
批处理在带有空格的路径下以管理员身份运行时,切换到本身所在目录???

pushd %~dp0\

除了回到原位, 通常后续会用到 目前所在的 drive 及 directory, 或完整的 PATH,
所以写法上有所不同.

看得出来大大对批处理很有研究, 本人早期使用Unix,
所以有些批处理的思考模式倾向使用( 由Linux 移植到Windows 的 ) "仿Linux/Unix" 命令 来解决,
有兴趣可参考:
如何利用 仿unix/linux命令 sed 一次替换文字中的 "某些相似性的字串" ==>
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=383106


nttwqz 发表于 2017-9-17 00:20:12

tools241 发表于 2017-9-16 21:22
除了回到原位, 通常后续会用到 目前所在的 drive 及 directory, 或完整的 PATH,
所以写法上有所不同.

...

现在有转到Windows的阵营了?

话说,我还有转到Linux阵营的想法呢……

窄口牛 发表于 2017-9-17 07:28:03

win下的ps也很强大,不比移植的linux差很多
页: [1]
查看完整版本: 一个打开文件夹的bat命令在系统中能够正常执行,在主板DOS中不能正常执行。