locked
windows 7 批次檔的 bug? RRS feed

  • 問題

  • 請問有沒有人能解決,

    在多行的批次檔中打上某些特別的中文字,

    執行時就會出現有些行指令字元被吃掉的問題。

    我的系統是 Win7 64bit 英文版  設成中文環境

    例如:

    echo tag1
    copy "RD.txt" "研發.txt"

    執行結果會變成如下,

    copy 的 co 不見了,

    如果 "研發.txt" 換成其它字元的檔名,

    就有可能正常執行(英文檔名 100%可正常執行)。

    C:\TEMP>echo tag1
    tag1
    
    C:\TEMP>py "RD.txt" "研發.txt"
    'py' is not recognized as an internal or external command,
    operable program or batch file.
    C:\TEMP>
    謝謝



    • 已編輯 NickHsiao 2015年12月17日 上午 07:54
    2015年12月16日 上午 09:43

解答

  • 找到問題了
    原因出在換行符號。

    如果換行符號是用 Windows 慣例,
    也就是  0X0d 0x0a,
    就可以正常執行。

    如果換行符號是用 Linux 慣例,
    也就是  0x0a,
    就會出問題。

    換行符號在一般文件編輯模式下,
    真的無法看的出差異。


    • 已標示為解答 NickHsiao 2015年12月23日 上午 04:17
    2015年12月23日 上午 04:16

所有回覆

  • 用 DOS 指令:
    mode con codepage

    查一下,字碼頁的設定是 950 嗎?

    順便查一下批次檔的編碼是 ANSI、UTF-8、Unicode?



    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」

    2015年12月16日 下午 04:28
  • 字碼頁的設定是 950 。

    批次檔的編碼是 ANSI。

    2015年12月17日 上午 02:51
  • 把下列編碼全測過一遍了

         ANSI、 UTF8(without BOM)、 UTF8、 UCS-2 big endian、 UCS-2 little endian

    還是不行。

    2015年12月17日 上午 03:14
  • 後來發現我的 Win7 是英文版設成中文字環境。

    這會有影響嗎?

    2015年12月17日 上午 07:53
  • 在批次檔的第一行就指定編碼 950

    chcp 950



    • 已編輯 Alex Chuo 2015年12月18日 下午 02:53
    2015年12月18日 下午 02:53
  • 還是不行

    批次檔內容:

    chcp 950
    echo tag1
    copy "RD.txt" "研發.txt"

    執行結果如下

    C:\TEMP>test2.bat
    
    C:\TEMP>chcp 950
    Active code page: 950
    
    C:\TEMP>ho tag1
    'ho' is not recognized as an internal or external command,
    operable program or batch file.
    
    C:\TEMP>py "RD.txt" "研發.txt"
    'py' is not recognized as an internal or external command,
    operable program or batch file.
    C:\TEMP>

    2015年12月21日 上午 05:54
  • 請問: Win7 64bit 英文版  設成中文環境,是指什麼?

    環境中是否有非微軟的防毒軟體,若有,煩請完完全全地關閉,再測試看看?


    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」

    2015年12月21日 上午 06:33
  •  Win7 64bit 英文版  設成中文環境,

    是指安裝的 OS 是英文版的 64位元 windows。

    然後在控制台的地區跟語系設定中,

    設成台灣跟中文的環境。

    有安裝 NOD32 ,關閉後結果還是一樣。

    2015年12月21日 下午 01:02
  • 請提供下面指令的執行結果擷圖:

    type <你的批次檔>

    例如:

    type alex.bat


    ☞ 這裡是「免費的討論區」付費支援服務請造訪 此處享受尊榮服務
    如果回覆對您有幫助,請記得按下標示為解答」

    2015年12月21日 下午 02:46
  • 找到問題了
    原因出在換行符號。

    如果換行符號是用 Windows 慣例,
    也就是  0X0d 0x0a,
    就可以正常執行。

    如果換行符號是用 Linux 慣例,
    也就是  0x0a,
    就會出問題。

    換行符號在一般文件編輯模式下,
    真的無法看的出差異。


    • 已標示為解答 NickHsiao 2015年12月23日 上午 04:17
    2015年12月23日 上午 04:16