ব্যাচ ফাইলে কোনও ফাইল উপস্থিত থাকলে যাচাই করবেন কীভাবে?


185

আমাকে এমন একটি .BATফাইল তৈরি করতে হবে যা এটি করে:

  1. যদি C:\myprogram\sync\data.handlerউপস্থিত থাকে তবে প্রস্থান করুন;
  2. যদি C:\myprogram\html\data.sqlউপস্থিত না থাকে তবে প্রস্থান করুন;
  3. ইন C:\myprogram\sync\ছাড়া সমস্ত ফাইল এবং ফোল্ডার মুছে ফেলে ( test, test3এবং test2)
  4. অনুলিপি C:\myprogram\html\data.sqlকরুনC:\myprogram\sync\
  5. অপশন সহ অন্যান্য ব্যাচ ফাইল কল করুন sync.bat myprogram.ini

এটি বাশ পরিবেশে থাকলে এটি আমার পক্ষে সহজ ছিল, তবে কোনও ফাইল বা ফোল্ডার উপস্থিত থাকলে এবং এটি কোনও ফাইল বা ফোল্ডার হলে কীভাবে পরীক্ষা করতে হয় তা আমি জানি না।

উত্তর:


288

আপনি যদি ফাইলটি যাচাই করতে উপস্থিত থাকেন তবে ব্যবহার করতে পারেন:

IF EXIST "filename" (
  REM Do one thing
) ELSE (
  REM Do another thing
)

আপনার যদি "অন্য" প্রয়োজন না হয় তবে আপনি এটির মতো কিছু করতে পারেন:

set __myVariable=
IF EXIST "C:\folder with space\myfile.txt" set __myVariable=C:\folder with space\myfile.txt
IF EXIST "C:\some other folder with space\myfile.txt" set __myVariable=C:\some other folder with space\myfile.txt
set __myVariable=

এখানে ফাইল বা ফোল্ডার সন্ধানের একটি কার্যকারী উদাহরণ রয়েছে:

REM setup

echo "some text" > filename
mkdir "foldername"

REM finds file    

IF EXIST "filename" (
  ECHO file filename exists
) ELSE (
  ECHO file filename does not exist
)

REM does not find file

IF EXIST "filename2.txt" (
  ECHO file filename2.txt exists
) ELSE (
  ECHO file filename2.txt does not exist
)

REM folders must have a trailing backslash    

REM finds folder

IF EXIST "foldername\" (
  ECHO folder foldername exists
) ELSE (
  ECHO folder foldername does not exist
)

REM does not find folder

IF EXIST "filename\" (
  ECHO folder filename exists
) ELSE (
  ECHO folder filename does not exist
)

1
ফাইল নাম সহ একজন কীভাবে পুরো পথ পরীক্ষা করতে পারে? পাথটিতে ফাঁকা স্থান উপস্থিত থাকলে বোনাস পয়েন্ট। যেমন ওপি বলেছেন, বেসে সহজ।
নিক

2
@ নিক: সাধারণভাবেও cmd- দয়া করে একটি আলাদা প্রশ্ন হিসাবে জিজ্ঞাসা করুন - তাদের খুব বেশি খরচ হয় না। 3 বছরেরও বেশি পুরানো একটিতে আরও একটি প্রশ্নের মন্তব্য যুক্ত করা অনেক প্রতিক্রিয়া জাগ্রত করতে পারে না (তবে এই সুনির্দিষ্ট প্রশ্নের উত্তরের জন্য প্রথমে এসও পরীক্ষা করুন, অন্যথায় আপনি আপনার নতুন প্রশ্নটিকে সদৃশ হিসাবে চিহ্নিত করবেন ...)
মাগু

8
IF /?সহায়তা ফাইল থেকে কিছু লক্ষ্য করার জন্য: The ELSE clause must occur on the same line as the command after the IF.এটি আমার জ্বলে উঠেছে । আশা করি এটি আপনাকে সাহায্য করবে
ফানকিমশরুম

1
অনুস্মারক: আইএফ, উপস্থিতি, ইএলএসই, আরইএম, ডেল, ইত্যাদি সমস্ত ছোট হাতের অক্ষরেও কাজ করে!
টেরা অ্যাশলে

1
ফাইল উপস্থিত নেই কিনা তা পরীক্ষা করতে, ব্যবহার করুন If Not Exist "%FilePath% ( command )। মনে রাখবেন যে, ব্যাট (কোঁকড়া ধনুর্বন্ধনীগুলির পরিবর্তে ব্রেস ব্যবহার করে{
ট্রান্সাঙ্গা

11

টাইপ আইএফ /? যদি সহায়তা পাওয়া যায় তবে এটি স্পষ্টভাবে ব্যাখ্যা করে যে কীভাবে ব্যবহারের অস্তিত্ব রয়েছে।

কিছু ফোল্ডার ব্যতীত একটি সম্পূর্ণ গাছ মুছে ফেলতে, এই প্রশ্নের উত্তর দেখুন: উইন্ডোজ ব্যাচ স্ক্রিপ্টটি একটি ফোল্ডার বাদে সমস্ত কিছু মুছতে হবে

শেষ পর্যন্ত অনুলিপি করার অর্থ কেবল কপি করা এবং অন্য একটি ব্যাট ফাইল কল করা এইভাবে করা যেতে পারে:

MYOTHERBATFILE.BAT sync.bat myprogram.ini

10

কোনও ফাইল উপস্থিত থাকে বা না থাকলে কমান্ডটি কীভাবে করা যায় সে সম্পর্কে এখানে একটি উদাহরণ রয়েছে:

if exist C:\myprogram\sync\data.handler echo Now Exiting && Exit
if not exist C:\myprogram\html\data.sql Exit

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

xcopy "test" "C:\temp"
xcopy "test2" "C:\temp"
del C:\myprogram\sync\
xcopy "C:\temp" "test"
xcopy "C:\temp" "test2"
del "c:\temp"

XCOPY কমান্ডটি ব্যবহার করুন :

xcopy "C:\myprogram\html\data.sql"  /c /d /h /e /i /y  "C:\myprogram\sync\"

আমি এর /c /d /h /e /i /yঅর্থটি ব্যাখ্যা করব :

  /C           Continues copying even if errors occur.
  /D:m-d-y     Copies files changed on or after the specified date.
               If no date is given, copies only those files whose
               source time is newer than the destination time.
  /H           Copies hidden and system files also.
  /E           Copies directories and subdirectories, including empty ones.
               Same as /S /E. May be used to modify /T.
  /T           Creates directory structure, but does not copy files. Does not
               include empty directories or subdirectories. /T /E includes
  /I           If destination does not exist and copying more than one file,
               assumes that destination must be a directory.
  /Y           Suppresses prompting to confirm you want to overwrite an
               existing destination file.

`To see all the commands type`xcopy /? in cmd

Sync.bat অপশন সহ অন্যান্য ব্যাচ ফাইলকে কল করুন my myprogram.ini।

আপনি এর দ্বারা কী বোঝাতে চাইছেন তা আমি নিশ্চিত নই, তবে আপনি যদি এই দুটি ফাইলই খুলতে চান তবে কেবল ফাইলটির পথই রেখে দিয়েছেন

Path/sync.bat
Path/myprogram.ini

এটি বাশ পরিবেশে থাকলে এটি আমার পক্ষে সহজ ছিল, তবে কোনও ফাইল বা ফোল্ডার উপস্থিত থাকলে এবং এটি কোনও ফাইল বা ফোল্ডার হলে কীভাবে পরীক্ষা করতে হয় তা আমি জানি না।

আপনি একটি ব্যাচের ফাইল ব্যবহার করছেন। আপনি আগে উল্লেখ করেছেন যে এটি ব্যবহারের জন্য আপনাকে একটি .bat ফাইল তৈরি করতে হবে:

আমাকে একটি .BAT ফাইল তৈরি করতে হবে যা এটি করে:


এই উত্তর দিয়ে কি বাজে?
অভ্রমি শেরমান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.