2017-03-17 187 views
0

我试图创建一个批处理文件,谁将会对指定的文件搜索,会被别的东西批处理文件,搜索文件,并替换字符串

问题替换字符串中它是路径是不同的每个用户。

的文件是prefs.js文件,并且它位于C:\%username%\AppData\Roaming\Thunderbird\Profiles\xxxxxxx.default\prefs.js

这可能吗?

+0

您希望每个用户更改字符串吗?或者从管理员帐户中执行此操作?检查这也 - http://stackoverflow.com/questions/60034/how-can-you-find-and-replace-text-in-a-file-using-the-windows-command-line-envir – npocmaka

+1

是_ “位于C:\%用户名%\ AppData \ Roaming \ Thunderbird \ Profiles \ xxxxxxx.default \ prefs.js'中的”每个用户的路径不同“或”文件_“ (我认为你正在回答你自己的问题) – Aacini

+0

你需要识别'xxxxxxx'字符串(每个用户在'xxxxxxx.default'文件夹名中是不同的)?是的,这是可能的,但我敢说,而不是'C:\%username%\ AppData \ Roaming'应该是'%userprofile%\ AppData \ Roaming'或甚至'%appdata%'就足够了。 – JosefZ

回答

0

虽然我知道这不是一个完整的答案,但它可能会让你到目前为止,甚至可能让你重新思考你的方法。

我不确定您是否知道每个最终用户都可以拥有多个配置文件以及配置文件文件夹。此外,他们可以拥有这些文件夹,不过它们不仅仅是* .default名称,(根本不存在),它们也可以位于任何位置。

然而,有确定这些名称和路径的方法,因为有一个名为profiles.ini位于所述%AppData%\Thunderbird目录它定义信息文件。

下面是一个未经测试的示例脚本,它应该将变量设置为单个用户可用的prefs.js文件。

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

为什么不直接在路径中使用* .default?

你有没有看到一个Thunderbird与两个.default目录?如果是的话,你的修改可能是另一个配置文件中的问题吗?

有时简单比复杂:)

相关问题