在Windows中使用FOR遍历路径变量

时间:2016-08-12 08:21:22

标签: windows shell batch-file cmd

我的忠实路径遍历方法不再有效 - 它将空格视为分隔符。我需要做批量编程已经有一段时间了 使用FOR循环时,唯一允许分隔符的是FOR /F选项 我不想创建一个包含路径的临时文件,希望做下面的事情:

C:\Users>for /f "delims=;" %i in %path% do echo %i
C:\Program was unexpected at this time.

C:\Users>for /f "delims=;" %i in (%path%) do echo %i
\Common was unexpected at this time.

C:\Users>for /f "delims=;" %i in 'foo;bar' do echo %i
'foo was unexpected at this time.

3 个答案:

答案 0 :(得分:2)

@echo off
setlocal EnableDelayedExpansion

for /F "delims=" %%a in (^"!path:^;^=^
% Do NOT remove this line %
!^") do echo %%a

输出示例:

C:\Program Files (x86)\AMD APP\bin\x86_64
C:\Program Files (x86)\AMD APP\bin\x86
C:\Windows\system32
C:\Windows
C:\Windows\System32\Wbem
C:\Windows\System32\WindowsPowerShell\v1.0\
C:\Program Files (x86)\Windows Live\Shared
C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static
C:\Program Files\Bandizip\7z

答案 1 :(得分:0)

使用标准for循环而不是for /F "delims=;"替换智能子字符串:

for %I in ("%PATH:;=";"%") do @echo %~I

假设PATH包含C:\Program Files\someapp1\app1.exe;C:\Program Files\someapp2\app2.exe;C:\Program Files\someapp3\app3.exe,您将收到以下输出:

C:\Program Files\someapp1\app1.exe
C:\Program Files\someapp2\app2.exe
C:\Program Files\someapp3\app3.exe

这仅适用于"没有包含任何路径的情况,且其中任何一个都不包含;

答案 2 :(得分:0)

按照 Mongodb 中的这些说明进行操作。

cd C:\
md "\data\db"

此步骤后,您可以一次签入"C:\Program Files\MongoDB\Server\<Version Number>\bin\mongod.cfg"

你可以看到,DBPath 的默认选项

# Where and how to store data.
storage:
  dbPath: %MONGO_DATA_PATH%
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

现在在系统的环境变量中添加 %MONGO_DATA_PATH% 变量作为键,其中 value 是文件路径(您在其中创建了 data/db 文件夹)

现在您可以在不传递 dbPath 参数的情况下启动 mongod 进程。