বাল্ক ফাইলের নাম পরিবর্তন এবং সরান


2

আমি একটি সিএসভি আমদানি ফাইল সামগ্রীর উপর ভিত্তি করে ফাইলগুলির নাম পরিবর্তন এবং অনুলিপি / মুভি করার জন্য একটি উইন্ডোজ / ডস ভিত্তিক পদ্ধতির সন্ধান করছি।

উদাহরণ স্বরূপ:

Import file example:

"C:\Dir1\File001.txt","Q:\Dir02\Dir03\Dir04\NewFile001.txt"
"C:\Dir2\File002.txt","Q:\Dir05\Dir06\Dir07\NewFile002.txt"
"C:\Dir3\File003.txt","Q:\Dir08\Dir09\Dir10\NewFile003.txt"

আমার যা দরকার

আদর্শভাবে পদ্ধতিটি উপরের ইনপুট হিসাবে গ্রহণ করবে এবং কোনও প্রয়োজনীয় ডিরেক্টরি তৈরি করার সময় কলাম 1 থেকে কলাম 2-এ ফাইলগুলি অনুলিপি / মুভিং করবে।

আমি যেমন কিছু পরিচালনা করতে ত্রুটি খুঁজছি

  • ডিরেক্টরি / ফোল্ডার তৈরি করতে পারে না (যে কারণেই হোক)
  • ফাইল ইতিমধ্যে বিদ্যমান - হয় গন্তব্যস্থলে বা কারণ নামকরণ ইনপুট একই ডিরেক্টরিতে দুটি ফাইল একই ডিরেক্টরিতে রাখে।
  • সংঘর্ষের সাথে মোকাবিলা করার একটি উপায় আছে (প্রত্যয় যুক্ত করুন, ইত্যাদি)।

আমি কি চেষ্টা করেছি

আমি এখন পর্যন্ত নীচের অ্যাপ্লিকেশনগুলি চেষ্টা করেছি কিন্তু উইন্ডোজের সাথে এই ধরণের অপারেশনটি ব্যবহার করবে এমন সফ্টওয়্যার পরিবর্তে অন্য কোনও পদ্ধতি আছে কিনা তা দেখতে আমার যেমন প্রয়োজন তেমন কাজ করার প্রয়োজন নেই:

  1. বাল্ক নামকরণের ইউটিলিটি

    • "আমদানি জুড়ি" ফাংশনটি ব্যবহার করার চেষ্টা করেও কোনও ফলাফল পাওয়া যায়নি। (আক্ষরিকরূপে কোনও ত্রুটি সহ কিছুই হয় না))
  2. উন্নত নামকরণ

    • আমার লোড ফাইলটি আমদানি করতে পারে, তবে এটি কেবল কলাম 2 থেকে ফাইলের নাম ব্যবহার করে। ফাইলগুলি ফোল্ডারে স্থানান্তরিত করে না।
  3. ডস ব্যাচ সরানো বা অনুলিপি ব্যবহার করে

    • বিদ্যমান ফাইলগুলি ওভাররাইট হয়ে যায়, দীর্ঘ পাথ / ফাইল নামগুলির জন্য ত্রুটি বার্তাগুলি বর্ণনামূলক নয়, নকল ফাইল নামগুলির জন্য কোনও ত্রুটি সংশোধন নয়।

    • আমার ব্যাচের অনুলিপি

      • COPY /Y "C:\Dir1\File001.txt" "Q:\Dir02\Dir03\Dir04\NewFile001.txt"

সম্ভব হলে আমার সমস্ত প্রয়োজনের জন্য কার্যকর এবং পর্যাপ্ত পরিমাণে কাজ করবে এমন অন্য কোনও পরামর্শ বা পদ্ধতিগুলি প্রশংসিত হবে যেহেতু আমি চেষ্টা করেছি এমন সমস্ত কিছুই নির্দিষ্ট কারণে প্রত্যাশিত ফলাফলের সংক্ষিপ্ত হয়ে উঠেছিল তাই সুপার ইউজারের কেউ যদি আমাকে এই কাজটিতে সাহায্য করতে পারে তবে আমি আগ্রহী ছিলাম ।

উত্তর:


1

কিছু সহজ ফর / এফ লজিক ব্যবহার করে এবং সেই অনুসারে ডিলিমিটার এবং টোকেনগুলি সেট করে আপনি প্রতিটি সিএসভি ফাইলের প্রতিটি লাইনটি পার্স করতে পারেন এবং প্রতিটি লুপ পুনরাবৃত্তির জন্য সেই অনুযায়ী প্রক্রিয়া করতে প্রতিটি কমা বিচ্ছিন্ন মান ব্যবহার করতে পারেন।

কিছু সাধারণ শর্তসাপেক্ষে যদি লজিক থাকে তবে আপনি প্রতিটি কন্ডিশনের সত্য বা মিথ্যা ভিত্তিতে কোন আদেশগুলি চালিত করতে পারেন তা নিয়ন্ত্রণ করতে পারেন তবে এটি সেখানে ফাইলগুলি ইতিমধ্যে উপস্থিত রয়েছে কি না তা যাচাই করতে পারে এবং সে অনুযায়ী ব্যবস্থা নিতে পারে।

পাইপযুক্ত XCOPY কমান্ড ব্যবহার করে ECHO Fএটি জানায় যে এতে প্রতিটি প্যারামিটারটি একটি ফাইল নয় যা কোনও ডিরেক্টরি নয়, এবং যদি ফাইলটি অনুলিপি করা হয় ( যেমন কলাম 2 ) সেই পথের পাশে যদি কোনও ডিরেক্টরি উপস্থিত না থাকে , সমস্ত তৈরি করা হবে ফাইল অনুলিপি অপারেশন সময়।

গন্তব্য ফাইলটি ইতিমধ্যে উপস্থিত রয়েছে এবং আপনি গন্তব্য ডিরেক্টরিতে কোনও মিল রয়েছে এমন ফাইলের নামের অনুলিপি করা প্রতিটি ফাইলের নামের সাথে একটি অনন্য প্রত্যয় যুক্ত করতে চান, আপনি রুটিনের জন্য একটি আর্গুমেন্ট হিসাবে প্রতিটি ফর / এফ লুপ ভেরিয়েবল পাস করার জন্য সহজ কল লজিক ব্যবহার করতে পারেন ।

আপনি বিদ্যমান গন্তব্য ফাইলগুলির প্রত্যয় হিসাবে অনন্য স্ট্রিং পুনর্গঠন এবং সংযোজন করতে পাস করা CALL ভেরিয়েবলের বিভিন্ন অংশকে পার্স করতে বিকল্প ব্যবহার করতে পারেন ।


মূলত এই ইচ্ছা। । ।

  1. ফর / এফ লুপের সাহায্যে ডিলিমিটার হিসাবে কমা ব্যবহার করুন এবং আরও প্রক্রিয়াকরণের জন্য স্বতন্ত্রভাবে ব্যবহার করার জন্য প্রতিটি ডিলিমিটার দ্বারা পৃথক করা সিএসভি ফাইল থেকে প্রতিটি মান পান
  2. যদি কলাম 1 থেকে উত্স ফাইলটি উপস্থিত না থেকে থাকে তবে প্রস্থান করুন এবং তারপরে পরবর্তী সিএসভি লাইনটি প্রসেস করুন
  3. যদি কলাম 2 থেকে গন্তব্য ফাইল বিদ্যমান , একটি রুটিন কল এবং যে রুটিন দুই CSV ফাইল লাইন মান পাস হিসাবে ভেরিয়েবল এবং প্রসারিত প্রক্রিয়া আরও কাছে

    • এই রুটিনটি তারিখের সময়টি ব্যবহার করে একটি অনন্য স্ট্রিং তৈরি করবে <YYYYMMDD_hhmmsstt>এবং এটি নিশ্চিত করা হবে যে গন্তব্য ফাইলের নামের সাথে এটি অনুলিপি করা হয়েছে যা বিদ্যমান ফাইলটি অনুলিপি করে অনুলিপি করে না
  4. উভয়ই যদি গন্তব্য ফাইল উপস্থিত না থাকে এবং উত্স ফাইল উপস্থিত না থাকে তবে এটি কেবল উত্স থেকে গন্তব্যে ফাইলটির অনুলিপি করবে

  5. যদি এই শর্তগুলির কোনওটি সত্য না হয় , তবে এটি সেই লাইনগুলি থেকে পুনরাবৃত্ত সিএসভি ফাইল মানগুলির সাথে কিছুই করে না।


ব্যাচ স্ক্রিপ্ট

@ECHO ON

SET csvfile=C:\Users\User\Desktop\test.csv

FOR /F "USEBACKQ TOKENS=1,2 DELIMS=," %%a in ("%csvfile%") DO ( 
    IF NOT EXIST "%%~a" GOTO :EOF
    IF EXIST "%%~b" CALL :DupeRoutine "%%~a" "%%~b"
    IF NOT EXIST "%%~b" IF EXIST "%%~a" ECHO F | XCOPY /Y /F "%%~a" "%%~b"
)
GOTO :EOF

:DupeRoutine
::: --Use this with system DATE format "Fri 10/13/2017"
::SET tstamp=%date:~10%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%
::: Use this with system DATE format "2017-10-13"
SET tstamp=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%
SET tstamp=%tstamp: =0%

ECHO F | XCOPY /Y /F "%~dpnx1" "%~dp2%tstamp%%~n2%~x2" 
GOTO :EOF

দ্রষ্টব্য: আপনি একবার যদি ফাইলটি গন্তব্যে অনুলিপি করে উত্স ফাইলগুলি মুছতে চান, তবে আপনি এই উদাহরণস্বরূপ ব্যাচ স্ক্রিপ্টের সাথে সামান্য শর্তযুক্ত লজিক ব্যবহার && DEL /Q /F <sourcefile>করতে পারেন যেখানে প্রযোজ্য আদেশগুলি অনুলিপি করা হয় যেখানে অনুলিপি অপারেশন সম্পূর্ণ হয়।


আরও সংস্থান

  • ফর / এফ
  • যদি
  • কল

    HELP CALL
    
    Substitution of batch parameters (%n) has been enhanced.  You can
    now use the following optional syntax:
    
        %~1         - expands %1 removing any surrounding quotes (")
        %~d1        - expands %1 to a drive letter only
        %~p1        - expands %1 to a path only
        %~n1        - expands %1 to a file name only
        %~x1        - expands %1 to a file extension only
    
  • XCOPY


1
আপনার কাছে এলে এটি একটি শট দিন তবে এটি আরও ত্রুটি যুক্তি করার জন্য সহজেই বাড়ানো যেতে পারে তবে এই বিষয়ে আরও বিশদ প্রয়োজন হবে যাতে এই অংশটি পুনরায় হতে পারে বলে ধরে নেওয়ার জন্য একটি পৃথক প্রশ্ন তৈরি করা ভাল হতে পারে may আপনার প্রশ্নটি জিজ্ঞাসা করা অনেকগুলি মূল উদ্দেশ্যটির উপর ভিত্তি করে আপনার প্রয়োজনগুলির জন্য খোলা বা কমপক্ষে পর্যাপ্ত পরিমাণ — কারও কাছে কিছুটা জটিল মনে হচ্ছিল তবে কয়েক বছরের সামান্য সামঞ্জস্যের সাথে আমার কয়েক বছরের স্ক্রিপ্টগুলির একটি ব্যাগে কিছু ছিল I আপনার মূল উদ্দেশ্য প্রয়োজনের জন্য সামঞ্জস্য করতে সক্ষম হয়েছিল তাই আমি ভেবেছিলাম যে আমি ভাগ করে নিই যেহেতু আমি মাঝে মধ্যে খুব ভাল লোক হই
পিম্প জুস আইটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.