无忧启动论坛

 找回密码
 注册
搜索

如何把以下一句批处理命令的路径从绝对路径改成相对路径?

查看数: 12668 | 评论数: 20 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2017-12-14 16:37

正文摘要:

        如何把以下一句批处理命令的路径从绝对路径改成相对路径: cscript.exe "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" /dstatus      &n ...

回复

kingshui 发表于 2018-8-24 21:07:09
窄口牛 发表于 2018-6-8 17:37
发出环境来看看,那个csv里肯定看得出来。

根据文件关联来获取软件路径是挺高效的方法。,我也是当时在处理JAVA版本的时候发现的。
kingshui 发表于 2018-8-24 21:03:43
双响炮 发表于 2018-6-6 18:45
for /f tokens^=2^ delims^=^" %%i in ('ftype^|find "Excel.CSV"') do (
我能请教2后面的^在这是转义的哪 ...

转义双引号
kingshui 发表于 2018-8-24 21:03:27
holley2008 发表于 2018-8-17 08:07
for的这句转义 我也迷迷糊糊

转义双引号
holley2008 发表于 2018-8-17 08:07:40
kingshui 发表于 2017-12-16 13:54
供参考,针对安装了office的系统有效。

for的这句转义 我也迷迷糊糊

点评

转义双引号  详情 回复 发表于 2018-8-24 21:03
窄口牛 发表于 2018-6-8 17:37:27
发出环境来看看,那个csv里肯定看得出来。

点评

根据文件关联来获取软件路径是挺高效的方法。,我也是当时在处理JAVA版本的时候发现的。  详情 回复 发表于 2018-8-24 21:07
双响炮 发表于 2018-6-6 18:45:43
for /f tokens^=2^ delims^=^" %%i in ('ftype^|find "Excel.CSV"') do (
我能请教2后面的^在这是转义的哪个字符吗?

点评

转义双引号  详情 回复 发表于 2018-8-24 21:03
kingshui 发表于 2018-1-13 18:09:05

不遍历。只要软件关联没出问题,那就没问题。
sairen139 发表于 2018-1-12 22:24:24
kingshui 发表于 2017-12-16 13:54
供参考,针对安装了office的系统有效。

遍历吗

点评

不遍历。只要软件关联没出问题,那就没问题。  详情 回复 发表于 2018-1-13 18:09
icevan 发表于 2017-12-17 15:06:06
  1. @echo off
  2. rem 指定待搜索的文件
  3. set "FileName=OSPP.VBS"
  4. echo 正在搜索,请稍候...
  5. 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 (
  6.   if exist %%a:\ (
  7.     pushd %%a:\
  8.     for /r %%b in (*%FileName%) do (
  9.       if /i "%%~nxb" equ "%FileName%" (
  10.         set vbs_path=%%b
  11.         goto act_task
  12.       )
  13.     )
  14.     popd
  15.   )
  16. )
  17. goto end

  18. :act_task
  19. echo %vbs_path%
  20. cscript "%vbs_path%" /remhst
  21. cscript "%vbs_path%" /sethst:xxx.xxxx.xxx
  22. cscript "%vbs_path%" /setprt:xxxx
  23. cscript "%vbs_path%" /act
  24. schtasks /create /tn "激活OFFICE" /tr "cscript.exe '%vbs_path%' /act" /sc monthly /mo 2 /ru "system" /st 09:30
  25. goto:eof

  26. :end
  27. echo 没有找到文件。
复制代码


贴个我自己在用的。服务器在本机的话直接/act就可以了。
顺便还添加了激活的计划任务。
不过查找文件的效率没有ftype这个高。
改天在修改一下。
chishingchan 发表于 2017-12-16 14:24:57
系统默认是这样打开的
C:\WINDOWS\System32\WScript.exe "%1" %*
C:\WINDOWS\System32\CScript.exe "%1" %*
chishingchan 发表于 2017-12-16 14:19:51

全放在 system32 目录下再试试
kingshui 发表于 2017-12-16 13:54:28
本帖最后由 kingshui 于 2017-12-17 13:38 编辑
  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. for /f tokens^=2^ delims^=^" %%i in ('ftype^|find "Excel.CSV"') do (
  4.         set "a=%%i"
  5.         cscript.exe "!a:~0,-9!OSPP.VBS" /dstatus
  6. )
  7. pause
复制代码


供参考,针对安装了office的系统有效。

点评

for的这句转义 我也迷迷糊糊  详情 回复 发表于 2018-8-17 08:07
谢谢!!!测试可用: [attachimg]364118[/attachimg]  详情 回复 发表于 2017-12-17 13:04

评分

参与人数 1无忧币 +5 收起 理由
有阴也有阳 + 5 简单!高效!很给力!!!

查看全部评分

nttwqz 发表于 2017-12-15 15:54:03
远景有人写过激活的批处理……呃,访问不了,忘了
永远的大象 发表于 2017-12-15 15:07:36

他这个需要和OSPP.VBS在同一目录
chishingchan 发表于 2017-12-15 11:15:16
请试验:
  1. cd /d "%~dp0"
  2. cscript.exe OSPP.VBS /dstatus
复制代码

点评

验证结果: [attachimg]363655[/attachimg]  详情 回复 发表于 2017-12-15 14:57
yfwang0798 发表于 2017-12-15 10:14:05
a到z盘符搜索没意义,假如我装了多个操作系统,即使搜到又如何?

还不如用
cscript.exe "%ProgramFiles%\Microsoft Office\Office16\OSPP.VBS" /dstatus
永远的大象 发表于 2017-12-14 20:56:18
本帖最后由 永远的大象 于 2017-12-14 21:02 编辑

额,如果你的C:\Program Files是系统默认的路径的话,可以用%ProgramFiles%代替,注册表里面定义好了的

如果一定要搜索的话,还是我最常用的命令:for

  1. for %%i 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 "%%i:\Program Files\Microsoft Office\Office16\OSPP.VBS” Cscript "%%i:\Program Files\Microsoft Office\Office16\OSPP.VBS” /dstatus
复制代码



附送从KMS_VL_ALL提取的判断是否安装了OFFICE 2016 的方法:
  1. :: Check if Office 2016 products are ACTUALLY installed
  2. set /a _Office16=0
  3. for /f "tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\16.0\Common\InstallRoot /v Path" 2^>nul') do (
  4.     set "_msi16=%%b"
  5. )
  6. for /f "tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Wow6432Node\Microsoft\Office\16.0\Common\InstallRoot /v Path" 2^>nul') do (
  7.     set "_msi16wow=%%b"
  8. )
  9. for /f "tokens=2*" %%a in ('"reg query HKLM\SOFTWARE\Microsoft\Office\ClickToRun /v InstallPath" 2^>nul') do (
  10.     set "_ctr16=%%b\Office16"
  11. )
  12. if exist "%_msi16%\OSPP.VBS" (
  13.     set /a _Office16=1
  14. ) else if exist "%_msi16wow%\OSPP.VBS" (
  15.     set /a _Office16=1
  16. ) else if exist "%_ctr16%\OSPP.VBS" (
  17.     set /a _Office16=1
  18. ) else if exist "C:\Program Files\Microsoft Office\Office16\OSPP.VBS" (
  19.     set /a _Office16=1
  20. ) else if exist "C:\Program Files (x86)\Microsoft Office\Office16\OSPP.VBS" (
  21.     set /a _Office16=1
  22. )
复制代码
nttwqz 发表于 2017-12-14 18:18:10
其实有另一种思路,从注册表读取路径……

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

闽公网安备 35020302032614号

GMT+8, 2024-11-27 13:55

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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