相关疑难解决方法(0)

在单独的行上回显%path%?

使用Windows命令提示符,我可以回显%path%并在单独的行上获取结果路径吗?像这样的东西,但对于Windows:

echo $path | tr ':' '\n'
Run Code Online (Sandbox Code Playgroud)

我可以使用vanilla cmd执行此操作,还是需要PowerShell或js脚本?

示例echo%path%output:

C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\;
Run Code Online (Sandbox Code Playgroud)

期望的输出:

C:\WINDOWS\system32;
C:\WINDOWS;
C:\WINDOWS\System32\Wbem;
C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;
C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;
C:\Program Files\Microsoft SQL Server\90\Tools\binn\;
C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\;
Run Code Online (Sandbox Code Playgroud)

powershell cmd path

79
推荐指数
3
解决办法
6万
查看次数

如何检查%PATH%中是否存在目录?

如何检查PATH环境变量中是否已存在目录?这是一个开始.但是,我已经设法使用下面的代码,它回显了%PATH%中的第一个目录.由于这是一个FOR循环,你会认为它将枚举%PATH%中的所有目录,但它只获得第一个目录.

有没有更好的方法呢?像%PATH%变量上运行的find或findstr之类的东西?我只想检查%PATH%目录列表中是否存在目录,以避免添加可能已存在的内容.

FOR /F "delims=;" %%P IN ("%PATH%") DO (
    @ECHO %%~P
)
Run Code Online (Sandbox Code Playgroud)

windows batch-file

59
推荐指数
6
解决办法
11万
查看次数

解析包含=的cmdline参数

在使用批处理文件多年后,我惊讶地发现等号'='被认为是一个参数分隔符.

鉴于此测试脚本:

echo arg1: %1
echo arg2: %2
echo arg3: %3
Run Code Online (Sandbox Code Playgroud)

和调用:

test.bat a=b c
Run Code Online (Sandbox Code Playgroud)

输出是:

arg1: a
arg2: b
arg3: c
Run Code Online (Sandbox Code Playgroud)

为什么这样,怎么可以避免?我不希望脚本的用户考虑到这个怪癖并引用"a = b",这是违反直觉的.

此批处理脚本在Windows 7上运行.

=====编辑=====

更多背景:我在编写bat文件以启动Java应用程序时遇到了这个问题.我想在bat文件中使用一些args,然后将其余的传递给java应用程序.所以我的第一次尝试是做shift,然后重建args列表(因为%*不受影响shift).它看起来像这样,就在我发现问题的时候:

rem Rebuild the args, %* does not work after shift
:args
if not "%1" == "" (
  set ARGS=!ARGS! %1
  shift
  goto args
)
Run Code Online (Sandbox Code Playgroud)

下一步是不再使用shift,而是通过一次删除一个字符%*直到遇到空格来手动实现移位:

rem Remove the 1st arg if it was the profile
set ARGS=%*
if not "%FIRST_ARG%" == "%KNOA_PROFILE%" goto …
Run Code Online (Sandbox Code Playgroud)

batch-file

9
推荐指数
1
解决办法
7657
查看次数

windows%PATH%变量 - 如何拆分';' 再次在CMD shell中

我刚检查了stackoverflow,它似乎非常有用,并且在Windows XP上运行良好.但是使用Windows 7它并不适用于某些不明原因.

该PATH变量看起来是这样的

C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\QuickTime\QTSystem\
Run Code Online (Sandbox Code Playgroud)

它显然包含\以及我用于分割包含此FOR循环的批处理的分号:

   FOR /F "delims=;" %%A IN ("%PATH%") DO (
      echo %%A
   )
Run Code Online (Sandbox Code Playgroud)

执行不会导致任何错误,但它只提供一个(第一个)令牌

C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common
Run Code Online (Sandbox Code Playgroud)

我不知道为什么FOR会终止并玩弄网上建议的几个变种但没有完成这项工作.

任何帮助将受到高度赞赏.

基督教

windows for-loop cmd path batch-file

8
推荐指数
1
解决办法
7571
查看次数

将带有符号的变量分成不同的部分

使用批处理,我希望能够将一个变量分成两个或三个部分,当有一个符号除以它们.例如,如果我有这样的字符串:var1; var2;

我如何让var1变为变量,var2变为另一个变量.

提前致谢

string batch-file

7
推荐指数
2
解决办法
1万
查看次数

如何检查系统PATH变量中列出的目录是否有效?

这与我的开发项目没有直接关系,但我很好奇.最近,经过大量的打击,我将构建问题追溯到系统PATH变量中的无效条目.在我的机器上,它包含大约20个条目.我猜测必须有一种更简单的方法来验证每个条目的有效性.谁能建议一种方法来检查这个?谢谢你的时间.

build path environment-variables

1
推荐指数
1
解决办法
1319
查看次数