DOS系统路径

4
有没有一种程序化的方法,通过批处理文件(或powershell脚本),将c:\Program Files下的所有文件夹添加到系统变量PATH中?我依赖命令行并且真的只想从命令行启动程序。
是的,我嫉妒Linux shell。
2个回答

6

将"C:\Program Files"作为参数传递到此批处理文件中:

@echo off

FOR /D %%G IN (%1\*) DO PATH "%%G";%path%

5
这样做很可能会导致计算机崩溃,即引发DLL Hell。当你调用每个可执行文件时,操作系统将查找PATH中的每个目录,以查找由该可执行文件引用的每个DLL或甚至EXE。随着你添加更多的目录到PATH中,操作系统可能会找到错误的文件,这种情况变得非常普遍。
因此,最佳实践是避免增加PATH,甚至减少它。与其隐式依赖关系,还不如使它们明确化。
我建议采取以下方法:
  1. 在您的用户主目录中创建一个bin目录
  2. 将该bin目录添加到您的用户PATH变量中
  3. 为您想要从命令行调用的每个应用程序在bin目录中创建一个Windows CMD脚本(与您键入的可执行文件具有相同的名称)
  4. 在每个脚本中,调用SetLocal,将应用程序的安装目录(在%ProgramFiles%下)添加到PATH,然后使用来自命令行的参数调用可执行文件
  5. PATH中删除相关目录,以便该脚本成为调用可执行文件的唯一方式

这样做的额外好处是不会像原问题目标所创建的那样造成巨大的安全漏洞。只需在其中创建一些恶意软件,如cmd.exe/devenv.exe等,即可创建C:\Program Files\AAAVeryBadDirectory\,并在运行任何一个文件时都将受到影响。 - BQ.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接