【问题标题】:How can I do it with for loop?如何使用 for 循环来做到这一点?
【发布时间】:2016-11-25 19:31:53
【问题描述】:

当我执行这个命令时

cd /D "%APPDATA%\Mozilla\Firefox\Profiles\*.REPORTING_1"

它工作正常,'*'被替换了

但是当我使用 for 循环时,'*' 不会被替换

for /L %%a in (1, 1, 2) do (
  cd /D "%APPDATA%\Mozilla\Firefox\Profiles\*.REPORTING_%%a"
  set ffile=%cd%
)

【问题讨论】:

  • 如果我查看我的 firefox appdata 子目录,我没有发现任何类似的东西,你应该展示一个你想要迭代的目录样本。 Tree.exe 对此仍有帮助。
  • IMO 星号前缺少反斜杠
  • 这是“%APPDATA%\Mozilla\Firefox\Profiles\*.REPORTING_1”更改为“C:\Users\khalid\AppData\Roaming\Mozilla\Firefox\Profiles\*.R‌​ EPORTING_1”,我创建的那个文件夹是默认文件夹,那里是“C:\Users\khalid\AppData\Roaming\Mozilla\Firefox\Profiles\*.d‌​efault”,并且“*”应该替换为 Mozilla 创建的字符串它
  • 我发的时候被删了,我重新编辑了
  • 您应该阅读带有 4 个空格的 help on formatting 缩进代码。我仍然不清楚您想要迭代的真实文件夹名称是什么样的。如果您不想公开您的个人资料,请取消它。

标签: batch-file for-loop


【解决方案1】:

您的 Firefox 配置文件可能会在该位置找到,大多数 *.default 文件夹也是如此,但这并不是唯一可以找到它们的位置,每个用户都可以拥有多个。 不过好消息是它们的位置是在特定位置的特定文件中定义的。

以下示例代码应该,(未经测试),通过搜索该已知文件来输出每个 ProfilePath,并且可以帮助您解决问题。

@Echo Off
SetLocal
Set "PF=%AppData%\Mozilla\Firefox\"
If Not Exist "%PF%" GoTo :EndIt
Set i=0
For /F "Tokens=1* Delims==" %%A In (
    'FindStr/R "^Path=[A-Z]*" "%PF%Profiles.ini"') Do (Set "FP=%%B"
    Call :Sub "%%FP:/=\%%")
Set PP[
:EndIt
Echo( Press any key to exit...
Timeout -1 1>Nul
Exit/B
    :Sub
    Set/A i+=1
    If Exist "%PF%%~1\" (Set PP[%i%]="%PF%%~1") Else (Set PP[%i%]="%~1")

每个 ProfilePath 都设置为一个变量,例如%PP[1]%、%PP[2]%、%PP[3]%……等

【讨论】:

  • 不是我的问题的直接答案,但是我改变了一切,以便我可以使用你的例子并且它工作,非常感谢(y)
猜你喜欢
  • 1970-01-01
  • 2018-08-28
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多