रोबोकॉपी यूनीलॉग आउटपुट जिबरिश है


10

मैंने यूनिकोड लॉग जनरेट करने के लिए विंडोज 7 में रोबोकॉपी प्राप्त करने का प्रयास किया, क्योंकि मेरे पास यूनिकोड अक्षरों वाली फाइलें हैं। मेरे द्वारा उपयोग की जाने वाली कमांड:

robocopy C:\mysource D:\mydest /mir /unilog:backup.log /tee

कॉपी काम करता है और ऑनस्क्रीन आउटपुट सही है, लॉग फ़ाइल में सिर्फ जिबरिश होती है। यह इस बात की परवाह किए बिना है कि क्या मैं कमांड प्रॉम्प्ट या पॉवरशेल का उपयोग करता हूं।

क्या देता है? क्या मुझसे कुछ गलत हो रही है?


यह मेरा अनुभव भी है। क्या आपको एक समाधान मिला?
एंड्रे कारन

जवाबों:


6

XP27 में बग। XP26 को डाउनग्रेड करने का प्रयास करें।

यह XP27RoboCopy (जो विंडोज 7 के साथ आता है) के संस्करण में एक बग प्रतीत होता है ।

संस्करण में XP26(जो विंडोज विस्टा के साथ आता है) /UNILOGमेरे लिए एक पूरी तरह से पठनीय यूनिकोड लॉग फ़ाइल का उत्पादन करता है।

यदि आपके पास EasyRoboCopy के आसपास विस्टा बिछाने की एक प्रति नहीं है, तो XP26संस्करण भी आता है । (मैं वास्तव में EasyRoboCopy खुद की कोशिश नहीं की है, बस robocopy.exeअपनी सेटअप फ़ाइल का उपयोग कर बाहर निकाला WinRAR।)


2

एक नज़र में, मैं कहता हूँ कि रोबोकॉपी द्वारा लिखी गई फ़ाइल का उपयोग करते समय /UNILOGऔर /TEEस्विच में एक यूटीएफ -16 लिटिल-एंडियन बाइट ऑर्डर मार्क होता है, जिसके बाद ISO-8859-1 टर्मिनल टाइपस्क्रिप्ट होता है।

इसे पठनीय बनाने के लिए, मैंने उबंटू में निम्नलिखित कार्य किए:

dd if=robocopy.log ibs=1 skip=2 obs=512        | # Strip the byte order mark
  iconv --from-code ISO-8859-1 --to-code UTF-8 | # Convert to UTF-8
  col -b > robocopy_utf-8.log                    # Interpret control characters

परिणामी फ़ाइल जो मैंने विंडोज कमांड प्रॉम्प्ट में देखी थी, उससे मेल खाती है।

आगे पढ़े: आदमी dd, आदमी iconv, आदमीcol


खिड़कियों में समान रूपांतरण करने का कोई तरीका? मैंने पॉवरशेल में पाइप में इस रूपांतरण की कोशिश की है, लेकिन कोई सफलता नहीं मिली:([System.Text.Encoding]::Unicode).GetString([System.Text.Encoding]::Convert([System.Text.Encoding]::GetEncoding(28591), [System.Text.Encoding]::Unicode, ([System.Text.Encoding]::GetEncoding(28591)).GetBytes($_)))
जोसफोविक

यह काम!!!!!
कोरी

1

Win7 पर (बाइनरी) फ़ाइल आउटपुट को देखते हुए, / UNILOG विकल्प बेकार है। यह मानक यूनिकोड बीओएम (FFFE) लिखते हैं, लेकिन फिर सब संकीर्ण वर्ण लिखने के लिए आगे बढ़ता है छोड़कर विकल्पों लाइन के लिए (जैसे, / बाइट्स / एस / कॉपी: DATs ...) है, जो वास्तविक यूनिकोड है। उसके बाद, यह एएनएसआई चार्ट में वापस लौटता है, और यह यूटीएफ -8 भी नहीं है ; यानी, यदि आपके पास मार्ग में एक विस्तृत चरित्र के साथ एक फ़ाइल नाम है, तो इसे एक संकीर्ण में बदल दिया जाता है '?' चरित्र।

जाहिर है, MSFT से इसे ठीक करने में कोई दिलचस्पी नहीं है, क्योंकि यह कुछ समय के लिए इस तरह से है, और मेरे पास सभी अपडेट हैं।


"वास्तविक यूनिकोड" एन्कोडिंग जैसी कोई चीज नहीं है। क्या आपका मतलब UTF-16 / UCS-2 है? यह पहली जगह में इस "अनिलोग" के नाम के लिए बूट करने के लिए एमएस गलती है ...
Nas Banov

1

मैंने अपनी अपठनीय, यूनिकोड-स्वरूप रोबोकॉपी लॉग फाइलों को विंडोज में तय किया (जो गलती से सामान्य रोबोकॉपी आउटपुट को जोड़कर पावर-शेल में आउट-फाइल से यूनिकोड आउटपुट को जोड़कर बनाया गया था), इस प्रकार है:

PowerShell में:

$bytes = [System.IO.File]::ReadAllBytes('C:\Temp\RoboCopyLog.txt')
$len = $bytes.Length
#Remove the Unicode BOM, and convert to ASCII
$text = [System.Text.Encoding]::ASCII.GetString($bytes,2,$len -2)
$text

उपरोक्त कोड सभी फ़ाइल आकारों के लिए काम नहीं कर सकता है!

(कोड के लिए क्रेडिट: मैंने फर्डिनेंड प्रांटल द्वारा इस पोस्ट से कोड को अनुकूलित किया: Stackoverflow - PowerShell के साथ बाइनरी फ़ाइलों को पढ़ें / पार्स करें


यह काम करता है अगर आउटपुट में यूनिकोड वर्ण नहीं होते हैं; अन्यथा, उन वर्णों को ASCII में बदल दिया जाता है।
कर्पूर

1

UTF-8 कोड पृष्ठ का उपयोग करें, फिर विजेता कनवर्टर चलाएं

यदि आपकी फ़ाइल या निर्देशिका नामों में यूनिकोड वर्ण हैं, तो /unilogपैरामीटर के साथ रोबोकॉपी कमांड जारी करने से पहले कमांड का उपयोग करें chcp 65001। (कोड पृष्ठ 65001 UTF-8 है ।)

एक बार जब आपके पास यूनिकोड लॉग हो जाता है, तो इसे MS Word में खोलें Unicode (UTF-8)और इसे सहेजें:

एमएस वर्ड फ़ाइल रूपांतरण डायलॉग


0

आपके मामले में, पॉवर्सशेल में कमांड कुछ इस तरह से है:

robocopy C:\mysource D:\mydest /mir | Out-File backup.log

वर्कअराउंड यह है कि आप बिल्ट-इन / यूनीलॉग पैरामीटर के बजाय आउट-फाइल का उपयोग करते हैं। आपको ठीक उसी लॉग फ़ाइल मिलेगी, लेकिन अब यह यूनिकोड में ठीक से लिखा जाएगा।


4
निश्चित रूप से यह यूनिकोड होगा, लेकिन कोई विशेष यूनिकोड वर्ण नहीं होगा। यह सिर्फ ASCII आउटपुट यूनिकोड के लिए अनुवादित है।
जोसफोविक

0

chcpसही कोड पेज के साथ, रोबोकॉपी कमांड से पहले कमांड चलाएं ।

UTF-8 के लिए (रोबोकॉपी और हिब्रू और शायद अधिक भाषाओं के साथ काम नहीं):

chcp 65001 | Out-Null

हिब्रू के लिए:

chcp 1255 | Out-Null 

पूर्ण कोड पृष्ठ की सूची: https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-intifiers

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.