我有一個批處理腳本,它使用拖放操作並基於所刪除的文件/文件夾的文件名創建一些html代碼。 With批處理:添加一個unicode頭或如何添加十六進制值或任何其他方式圍繞?
chcp 65001
我得到這個寫unicode。一切都很好,很好。至少在記事本編輯器中,瀏覽器只顯示垃圾。當我用記事本重新保存文件時,該文件也可以在瀏覽器中正常工作。 不幸的是它似乎創建Unicode文件丟失兩個「的Unicode頭」字符(0xFF和0xFE的),該文件前右,與hexdump都(http://www.fileformat.info/tool/hexdump.htm)相比,產生的結果。
關於這個話題我發現這一點: http://www.robvanderwoude.com/type.php#Unicode
鏈接文件從那裏各種各樣的不工作(參數格式錯誤)從本網站上的非本地回聲等例子是出了問題。複製一個空的unicodeHeader-Helper文件並追加我的文件可以正常工作,但是非常不理想,因爲它意味着任何文件夾,從中我的文件被拖拽和掉線都需要這個幫助文件。這種情況是不切實際的,所以這是不好的。
使用類型也出了問題,因爲它創造了一大堆的字符之間的空格中。
所以我就想用缺少的頭到一個臨時文件,寫入文件,添加兩個十六進制值到一個文件和臨時文件追加到它。所以基本上直接寫十六進制字符,而不是從空的unicode助手文件複製它們。
我發現這一點: http://www.dostips.com/forum/viewtopic.php?f=3&t=3857 ,而且這樣的: Writing characters > 7F (127) as hex strings according to code page 1252 in windows batch file
我想我可能只是更換例如十六進制值0xFF和0xFE的,並使其回顯到一個文件:
@echo off
call :hex2Char 0xFF char_FF
call :hex2Char 0xFE char_FE
echo %char_FF% %char_800%
exit /b
:hex2Char hexString rtnVar
for /f delims^=^ eol^= %%A in (
'forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c echo(%~1"'
) do set "%~2=%%A" >> temp.txt
exit /b
但似乎並非如此簡單。出現了兩個問題: 1.它在那裏寫入一些unicode字符,但它與unicode助手文件不同,正如hexdump所示。
file name: UniHeader.txt
mime type:
0000-0003: ef bb bf
file name: temp.txt
mime type:
0000-0000:
其實我可以改變FF或FE,它仍然只是打印0000-0000在hexdump都可以輸出...
- 我可以添加任何我想要的在這個文件之後(像編寫我的無頭文件的代碼並將其附加到創建的文件中,代碼在第二個出口/ b處停止,並且不再寫任何東西(但是刪除它使得整個事情根本不起作用並將其移動到文件末尾使其無法找到該文件被丟棄到蝙蝠) 說實話我並不是通過這幾個代碼行的時刻得到。退出/ b標誌着命令結束,如果我然後,正確地得到它爲什麼它會在第一個出口/ b後繼續工作,而在第二個出口/ b處停止?我也嘗試與標籤和轉到,沒有工作。
我很茫然現在。有沒有什麼優雅的方法來解決這個問題?
如果我理解你是正確的,那麼在這裏顯示爲ÿþ的字符被認爲是爲unicode頭添加的兩個字符?你想要直接輸入並插入到文件中?我不確定,如果我知道如何在BOFM後面輸入字符:部分。至少在我的鍵盤上,Alt + FE或ALT-FF沒有做任何事情。但是,我可能讓你完全錯誤? – kumoyadori
按住Alt鍵並按數字鍵盤0255(0xff)或0254(0xFE)。在頁碼850中,這些字符顯示在答案中。 'for'命令只是爲了強調和/或分離代碼,但將它們分配給變量並回顯它們是沒有問題的。請記住,echo輸出爲0x0D 0x0A(crlf)。如果這是一個問題,請使用通常的'echo%var%| set/p ='技巧來刪除crlf –
我得到了輸入的兩個字符,謝謝。然而,我仍然堅定地認爲,我如何將這個工作與我自己的代碼結合起來。像現在一樣,例如它像這樣鬆動:https://www.dropbox.com/s/jipf45j6vcj82sv/MC%20ND%20Batch%20test.bat,但它會在退出\ b後停止,此後不再執行任何操作。我認爲,我可能還是不明白如何正確處理exit \ b命令... – kumoyadori