2017-03-17 181 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目錄?如果是的話,你的修改可能是另一個配置文件中的問題嗎?

有時簡單比複雜:)

相關問題