无忧启动论坛

 找回密码
 注册
搜索

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

查看数: 8166 | 评论数: 26 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-9-16 10:51

正文摘要:

        一个打开文件夹的bat命令在系统中能够正常执行,在主板DOS中不能正常执行。         打开bat所在驱动器里面的sysiso文件夹: start %~d ...

回复

窄口牛 发表于 2017-9-17 07:28:03
win下的ps也很强大,不比移植的linux差很多
nttwqz 发表于 2017-9-17 00:20:12
tools241 发表于 2017-9-16 21:22
除了回到原位, 通常后续会用到 目前所在的 drive 及 directory, 或完整的 PATH,
所以写法上有所不同.

...

现在有转到Windows的阵营了?

话说,我还有转到Linux阵营的想法呢……
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



点评

现在有转到Windows的阵营了? 话说,我还有转到Linux阵营的想法呢……  详情 回复 发表于 2017-9-17 00:20
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\

一句搞定!

点评

除了回到原位, 通常后续会用到 目前所在的 drive 及 directory, 或完整的 PATH, 所以写法上有所不同.  详情 回复 发表于 2017-9-16 21:22
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

点评

批处理在带有空格的路径下以管理员身份运行时,切换到本身所在目录??? pushd %~dp0\ 一句搞定!  详情 回复 发表于 2017-9-16 20:55
nttwqz 发表于 2017-9-16 16:08:47
邪恶海盗 发表于 2017-9-16 15:23
你这个是访问当前目录子目录,这是没问题的

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

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

点评

[attachimg]353440[/attachimg]  详情 回复 发表于 2017-9-16 16:08
nttwqz 发表于 2017-9-16 14:56:14
邪恶海盗 发表于 2017-9-16 13:38
不能直接从当前文件夹访问其它文件夹,必需先切换到目标文件夹...

点评

你这个是访问当前目录子目录,这是没问题的  详情 回复 发表于 2017-9-16 15:23
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%

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

这个和下面的有何不同?
  1. @explorer.exe %~d0
复制代码

点评

@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  详情 回复 发表于 2017-9-16 19:17
窄口牛 发表于 2017-9-16 14:47:29
是的,所以我才用的命令。
nttwqz 发表于 2017-9-16 14:35:36
807979023 发表于 2017-9-16 14:09
换个pe吧,我这里03 7 8 都能运行批处理: start %~d0\sysiso

我怀疑他的WinPE里面极有可能就没有explore,所以他这个如果是想通过start打开相关文件夹而不是在脚本里面切换到该文件夹根本就是做不到!!
807979023 发表于 2017-9-16 14:09:09
换个pe吧,我这里03 7 8 都能运行批处理: start %~d0\sysiso


03pe.jpg (32.46 KB, 下载次数: 122)

03pe

03pe

7pe.jpg (31.96 KB, 下载次数: 133)

7pe

7pe

8pe.jpg (33.84 KB, 下载次数: 100)

8pe

8pe

点评

我怀疑他的WinPE里面极有可能就没有explore,所以他这个如果是想通过start打开相关文件夹而不是在脚本里面切换到该文件夹根本就是做不到!!  详情 回复 发表于 2017-9-16 14:35
邪恶海盗 发表于 2017-9-16 13:38:21
不能直接从当前文件夹访问其它文件夹,必需先切换到目标文件夹...

点评

[attachimg]353438[/attachimg]  详情 回复 发表于 2017-9-16 14:56
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 12:43:54
nttwqz 发表于 2017-9-16 11:40
哦,忘了,还以为你已经编好批处理了呢

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

是运行批处理,不是在PE的CMD下输入命令。
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 14:47
谢谢!还是相同的报错: [attachimg]353415[/attachimg]  详情 回复 发表于 2017-9-16 12:42
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: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\
窄口牛 发表于 2017-9-16 11:44:13
本帖最后由 窄口牛 于 2017-9-16 11:45 编辑

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

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

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

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

点评

是运行批处理,不是在PE的CMD下输入命令。  详情 回复 发表于 2017-9-16 12:43
有阴也有阳 发表于 2017-9-16 11:15:57
nttwqz 发表于 2017-9-16 11:02
不要动不动就DOS,这个应该是PE下的命令提示符。

可以尝试

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

点评

哦,忘了,还以为你已经编好批处理了呢 %~d0指的是批处理所在的分区盘符,cmd下面是输入是无效的!只能使用绝对路径! 还有个情况,我才你应该是这种情况!你的PE是原生的,不带explorer.exe,文件夹自然是无  详情 回复 发表于 2017-9-16 11:40
音乐与电脑 发表于 2017-9-16 11:09:25
dos里又没有explorer 当然不能打开文件夹咯
有阴也有阳 发表于 2017-9-16 11:03:07
fjzjk 发表于 2017-9-16 10:59
dos里应该用cd来进入文件夹吧

改成:

cd %~d0\sysiso\


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

可以尝试

start "" %~d0\sysiso\

explorer.exe %~d0\sysiso\

点评

以上2条命令在系统下都可以成功执行,但在PE下的命令提示符中都无法执行。  详情 回复 发表于 2017-9-16 11:15
fjzjk 发表于 2017-9-16 10:59:14
dos里应该用cd来进入文件夹吧

点评

改成: cd %~d0\sysiso\ 对吗?  详情 回复 发表于 2017-9-16 11:03

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-9-28 17:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表