xcopy: प्रतिलिपि के बजाय फ़ाइलें स्थानांतरित करें?


11

मैं xcopyस्थानांतरित करने के लिए उपयोग करना चाहूंगा , न कि सत्यापन ध्वज के साथ एक नेटवर्क पर फ़ाइलों की प्रतिलिपि बनाना। मुझे फ़ाइलों को स्थानांतरित करने के लिए xcopy पर स्विच नहीं मिला, क्या xmoveमेरे पास ऐसा कोई उपयोग हो सकता है verify?

फिलहाल मैं उपयोग कर रहा हूँ xcopy /D /V, लेकिन स्रोत पर फ़ाइलों से छुटकारा पाने की जरूरत है केवल जब यह एक फ़ाइल सफलतापूर्वक गंतव्य पर प्रतिलिपि बनाई गई सत्यापित है।


1
आपको इस बात की जानकारी होनी चाहिए कि यहां तक ​​कि /vयह गारंटी भी नहीं देता है कि किसी फ़ाइल को सही ढंग से लिखा गया है: डिस्क और ओएस कैश का मतलब है कि राइट कैशे में एक फ़ाइल को वहां से सफलतापूर्वक प्राप्त होने से पहले पुनर्प्राप्त किया जाएगा। एकमात्र सुरक्षित विकल्प प्रतिलिपि बनाना और भविष्य के समय पर एक सत्यापन और हटाना शेड्यूल करना है। स्वाभाविक रूप से मैं कहूंगा कि 5 मिनट पर्याप्त होंगे, लेकिन कोई कठिन और तेज नियम नहीं है: यह डिस्क गतिविधि और कैश के आकार पर निर्भर करता है (मैं एक के रूप में बोलता हूं जिसने कैश्ड राइट विफलताओं का सामना किया है)।
AFH

जवाबों:


11

आपको जांच करनी चाहिए robocopy, यह बहुत अधिक शक्तिशाली है xcopy। आप आसानी से /MOVया के साथ फ़ाइलों को स्थानांतरित कर सकते हैं /MOVE

केवल फ़ाइलों को स्थानांतरित करने के लिए (प्रतिलिपि करने के बाद स्रोत से हटाएं)

robocopy from_folder to_folder files_to_copy /MOV

फ़ाइलों और निर्देशिकाओं को स्थानांतरित करने के लिए (प्रतिलिपि करने के बाद स्रोत से हटाएं)

robocopy from_folder to_folder files_to_copy /MOVE

http://ss64.com/nt/robocopy.html


2
रोबोकॉपी के पास verifyउतना दूर नहीं है जितना मैं देख सकता हूं।
जेरासस

@JBurace यदि आप उस लिंक को देखते हैं जो मैंने पोस्ट किया है /MOVE : Move files and dirs (delete from source after copying):। यदि यह कॉपी नहीं करता है, तो यह स्रोत को नहीं हटाएगा।
इत्मीनान

2
यदि यह स्थानांतरित हो जाता है तो क्या होता है, लेकिन फाइल का मिलान नहीं होता है? यही कारण है कि मुझे ए करने की आवश्यकता है verify। मुझे रोबोकॉपी जानकारी में कुछ भी नहीं दिखता है कि यह वास्तव में दो फाइलों को सत्यापित करता है यह सुनिश्चित करने के लिए कि यह सिर्फ स्थानांतरित नहीं हुआ था लेकिन सही ढंग से स्थानांतरित नहीं हुआ था।
JBurace

@JBurace मुझे नहीं लगता कि यह उस तरह काम करता है। यदि यह फ़ाइल की सभी प्रतिलिपि नहीं करता है, तो यह कार्य करेगा जैसे कि कुछ भी कॉपी नहीं किया गया है, और इसलिए स्रोत को नहीं हटाएगा।
इत्मिनान

1

आप Xcopyसत्यापन के साथ अपनी कमांड को चलाने के लिए एक बैच फ़ाइल का उपयोग कर सकते हैं , उसके बाद Xcopy द्वारा लौटाए गए त्रुटि स्तर की जांच के बाद यह निर्धारित करने के लिए कि क्या फ़ाइलों की सफलतापूर्वक प्रतिलिपि बनाई गई है या नहीं। यदि उन्होंने किया, तो स्रोत को हटा दें।

से Xcopy प्रलेखन :

Exit
code  Description
====  ===========
  0   Files were copied without error.
  1   No files were found to copy.
  2   The user pressed CTRL+C to terminate xcopy.
  4   Initialization error occurred. There is not
      enough memory or disk space, or you entered
      an invalid drive name or invalid syntax on
      the command line.
  5   Disk write error occurred.

उदाहरण बैच:

Rem Attempt file copy...
xcopy /D /V %1 %2

Rem Check result code and if it was successful (0), delete the source.
if errorlevel 0 (
    echo Copy completed successfully
    del /Q %1
    exit /B
)

Rem Not Errorlevel 0...
echo Copy failed for some reason.

errorlevelअभी भी काम करता है अगर मैं कर रहा हूँ dir args && xcopy args >> logfile.txt:? या का errorlevelएक परिणाम होगा dir?
JBurace

इसमें अंतिम कमांड रन का परिणाम होगा। आप इसे एक साधारण बैच फ़ाइल के साथ परीक्षण कर सकते हैं: pastebin.com/6GwNA7MP
ʜcʜι 21007

if errorlevel 0हमेशा ट्रिगर। क्योंकि यह वास्तव में जाँच कर रहा है if errorlevel >= 0इसलिए आपको त्रुटि मामले की जाँच करनी चाहिए if errorlevel 1 ( ... failure case ... ) else ( ... success case ... )। या, यदि आप शैली पसंद करते हैं if not errorlevel 0 (... success case ... )या, यदि आप शैली पसंद करते हैंif %ERRORLEVEL% EQU 0 ( ... success case ... )
जेसी चिशोल्म

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