
【已解決】批處理替換U盤里配置文件出現問題請大佬幫忙修改新人小白,東拼西湊自己寫了個代碼,這個bat的作用是想替換U盤里一個配置文件里的路徑前的盤符,變成U盤的盤符,因為經常更換其他電腦用,所以路徑前的盤符是變量,要隨U盤的盤符變更,但是出現如下問題,小白已經實在是沒招了,請幫忙更改代碼,謝謝!1.原來文檔里的舊盤符%OldDisk%(如D)用新查找得到的新盤符%DriveU%(如G)替換后出現這樣的情況-----此條本人已經解決2.因為代碼里用了eol=!,導致原文件里的很多!開頭的注釋被刪除,但是不用eol又會造成原文件注釋的部分被修改[attach]12640[/attach]------此條待找尋新思路3.新生成的文件編碼變成ANSI,能否讓新文件與原文件編碼一致代碼如下,希望來論壇厲害的大佬幫忙修改代碼------根據#4樓的提醒,此條已改好
nclick="copycode($('code0'));">復制代碼
- @
- echo off&setlocal enabledelayedexpansion
- REM 聲明采用UTF-8編碼
- chcp 65001
- rem 獲取U盤當前盤符
- for /f tokens=2 delims== %%a in ('wmic LogicalDisk where VolumeName='Hervey_Hu' get DeviceID /value') do (
- set DriveU=%%a
- )
- set strFilePath=%DriveU%PTCCreo_PTC_System_documentsconfig.pro
- if not exist %strFilePath% goto end
- rem 讀取舊盤符
- for /f tokens=1 delims= %%i in ('findstr PTC %strFilePath%') do (
- for /f tokens=2 delims= %%j in (%%i) do (
- set OldDisk=%%j
- )
- )
- REM 讀取config.pro所有內容
- for /f eol=! tokens=* %%k in (%strFilePath%) do (
- REM 設置變量str為每行內容
- set str=%%k
- REM 如果該行有舊盤符a,則將其改為新盤符A
- set str=!str:%OldDisk%=%DriveU%!
- rem 把修改后的全部行存入$
- echo !str!>>$
- )
- rem 替換原文件
- move $ %strFilePath%
- exit
- :end
- @echo No file was found~
- pause

