উইন্ডোজ পুনরাবৃত্তি স্পর্শ কমান্ড


17

উইন্ডোজ 7-এ, তারিখ / সময় স্ট্যাম্প আপডেট করার জন্য আমি কীভাবে কোনও ডিরেক্টরিতে (সাব-ডাইরেক্টরিগুলি সহ) সমস্ত ফাইলকে পুনরাবৃত্তভাবে স্পর্শ করতে পারি?

উইন্ডোজ 7 এর কি এটি সম্পাদন করার কোনও ব্যবস্থা আছে?



এই লিঙ্কটিতে "স্বীকৃত" উত্তরটি একটি ফাইলের জন্য এটি সম্পন্ন করার জন্য .NET প্রোগ্রামিং লাইব্রেরি ব্যবহার সম্পর্কে। অন্যরা একক ফাইল আপডেট করার জন্য একটি প্রসঙ্গ মেনু যুক্ত করার বিষয়ে ছিল। আমি এটি পুনরুক্তি এন ফাইলগুলিতে করতে একটি বিল্ট ইন কমান্ডের সন্ধান করছিলাম। নীচের উত্তরটি সমস্ত ফাইলের জন্য এটি করার জন্য কাজ করেছে। এটি অন্তর্নির্মিত নয়, তবে এটি কাজ করে। ধন্যবাদ।
jmq

এটি ইউনিক্স টাচ কমান্ডের উইন্ডোজ সংস্করণের ডুপ্লিকেট নয় , কারণ এই প্রশ্নটি বিশেষত পুনরাবৃত্তির জন্য জিজ্ঞাসা করছে। তবে নোট করুন যে এই প্রশ্নের কয়েকটি উত্তরের পুনরাবৃত্তিমূলক ফর্ম রয়েছে।
জেডিবিপি

উত্তর:


19

বিভিন্ন সম্ভাবনা রয়েছে:

  • একটি ইউনিক্স একটি বন্দর ব্যবহার করুন touchকমান্ড কেবল মেশা findএবং touchইউনিক্স উপায়। বিভিন্ন পছন্দ আছে। খালি উল্লিখিতগুলি হ'ল জিএনইউউইন 32 , সাইগউইন এবং আনক্সিটিলস । কম সুপরিচিত, তবে কিছু উপায়ে আরও ভাল, এসএফইউএ ইউটিলিটি টুলকিট- এর সরঞ্জামগুলি যা ইউএনআইএক্স -ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য সাবসিস্টেমে চালিত হয় যা উইন্ডোজ 7 আলটিমেট সংস্করণ এবং উইন্ডোজ সার্ভার 2008 আর 2 সহ বাক্সে ঠিক সেখানে আসে। (উইন্ডোজ এক্সপি-র জন্য, ইউনিক্স সংস্করণ ৩.৫-এর জন্য পরিষেবাদি ডাউনলোড ও ইনস্টল করা যায় )) এই টুলকিটটিতে কর্ন এবং সি শেলের মাধ্যমে এবং থেকে, প্রচুর পরিমাণে কমান্ড-লাইন টিইউআই সরঞ্জাম রয়েছেmvduperlএবং awk। এটি x86-64 এবং IA64 স্বাদ পাশাপাশি x86-32 উভয় ক্ষেত্রেই আসে। প্রোগ্রামগুলি উইন্ডোজের যথাযথ পসিক্স পরিবেশে cygwin1.dllউইন 32 এর উপর এমুলেটর ডিএলএল (যেমন ) লেয়ারিং জিনিসগুলির চেয়ে চালিত হয় । এবং হ্যাঁ, টুলকিটটিতে রয়েছে touchএবং findপাশাপাশি আরও 300 জন রয়েছে।
    অবশ্যই এই ফাইলটির প্রতিটি স্পর্শ করার জন্য পৃথক প্রক্রিয়া চালানোর সুপরিচিত অসুবিধা রয়েছে have নিম্নলিখিত বিকল্পগুলির সাথে এটি কোনও সমস্যা নয়।

  • touchলোকেরা লিখেছেন এবং প্রকাশ করেছেন এমন অনেক নেটিভ উইন 32 কমান্ডগুলির মধ্যে একটি ব্যবহার করুন । তাদের মধ্যে অনেকগুলি ইউনিক্সের findচারপাশে জড়ানোর প্রয়োজনীয়তা ছাড়াই পুনরাবৃত্তি করার জন্য বিকল্পগুলি সমর্থন করে। (সর্বোপরি, তারা ইউজারবেসকে লক্ষ্য করে যা একটি touchকমান্ড সন্ধান করছে কারণ এতে ইউনিক্স কমান্ডের পুরো বোঝা নেই) এটি স্টাফেন দুগুয়ের একটিtouch যা আপনি দেখতে পাচ্ছেন একটি --recursiveবিকল্প রয়েছে।

  • সিএমডির আরকেন রহস্যের সাথে চালাক হন। অন্য উত্তরে বর্ণিত হিসাবে, কমান্ডের COPY /B myfile+,,অল্প-পরিচিত "প্লাস" সিনট্যাক্স ব্যবহার করে কোনও ফাইলের সর্বশেষ পরিবর্তন তারিখের স্ট্যাম্পটি আপডেট করবে COPY( ঘটনাক্রমে এখানে আরও পাওয়া যাবে )। অবশ্যই FOR /Rএটি অপারেশনটি পুনরাবৃত্তভাবে সঞ্চালনের জন্য একত্রিত করা যেতে পারে , যেমন এখানে অন্য উত্তরে ইঙ্গিত দেওয়া হয়েছে।

  • একটি প্রতিস্থাপন কমান্ড দোভাষী ব্যবহার করুন এবং সিএমডি থেকে কম চালাক এবং আরও সোজা হয়ে উঠুন। জেপি সফটওয়্যারের টিসিসি / এলই হ'ল একটি। এটি এর কমান্ডে একটি /Sবিকল্প যুক্ত করে , যার অর্থ একটি মোড়কের প্রয়োজনীয়তা দূর করতে "প্লাস" সিনট্যাক্সের সাহায্যে কেউ ব্যবহার করতে পারে । তবে এটি সত্যই এখনও নিজের জন্য জীবনকে অহেতুক কঠিন করে তুলছে, এটি বিবেচনা করে যে টিসিসি / এলই-এর একটি বিল্ট ইন টাচ কমান্ড রয়েছে যা সরাসরি কোনও বিকল্পকে সমর্থন করে ।COPYCOPY /SFOR/S


2
+1, COPY /B file+,,যাবার উপায়, কোনও অতিরিক্ত ব্যবহারের দরকার নেই ... :-)
তামারা উইজসম্যান

3
পাওয়ারশেল উপায়:(ls file).LastWriteTime = DateTime.now
তামারা উইজসম্যান

5

যেহেতু এগুলি সহজেই উপলভ্য, তাই আমি অযাচিত ব্যবহারের সুযোগ নেওয়ার পরামর্শ দেব । এগুলিতে এগুলি findএবং touchআদেশগুলি অন্তর্ভুক্ত রয়েছে যা এটি খুব সহজ করে তুলবে।

শীর্ষস্থানীয় ডিরেক্টরিতে পরিবর্তন করার পরে আপনি সংশোধন করতে চান:

অনুসন্ধান . -প্রকার এফ-এক্সেক স্পর্শ {} +

5

শুধুমাত্র বিদ্যমান উইন্ডোজ কার্যকারিতা (ইনস্টল করার জন্য অতিরিক্ত কিছু নয়) ব্যবহার করতে এর মধ্যে একটি ব্যবহার করে দেখুন:

forfiles /P C:\Path\To\Root /S /C "cmd /c Copy /B @path+,,"  

(নির্দিষ্ট পথে শুরু হওয়া সমস্ত ফাইলকে পুনরাবৃত্তভাবে "স্পর্শ করুন")

অথবা

forfiles /S /C "cmd /c Copy /B @path+,,"   

(বর্তমান ডিরেক্টরিতে শুরু হওয়া সমস্ত ফাইলকে পুনরাবৃত্তভাবে "স্পর্শ করুন")


3
-1 হ'ল এই কমান্ডগুলি সাবফোল্ডারগুলি থেকে রুটে ফাইলগুলি অনুলিপি করে এবং ফলাফলটি একটি গোলযোগ।
টনিজি

1
ফিক্স +1 একটু সুতা কি @TonyG বললঃ forfiles / s / সি "cmd কমান্ড / C কপি / বি nul + ,,"
অ্যালেক্স Dupuis

সর্বশেষ পরিবর্তিত পরিবর্তন হয় না
beppe9000

4

আমি জানি এটি সম্ভবত কিছুটা দেরী হয়েছে তবুও, অন্য কারও যদি একই জিনিসটির প্রয়োজন হয় তবে আমি আমার উত্তরটি রেখে দেব।

জন T 'র উত্তর উইন্ডোজ 7. আমাকে জন্য কাজ না করে কিছু গবেষণা আমি এই ইউটিলিটি নামক পাওয়া পর SKTimeStamp , যা কাজ ঠিকভাবে আছে।

এখানে কিভাবে এটি কাজ করে আরও বিশদের সঙ্গে একটি নিবন্ধ আছে: http://www.trickyways.com/2009/08/how-to-change-timestamp-of-a-file-in-windows-file-created-modified-and অ্যাক্সেসড /

আপনার সম্পাদন করার জন্য প্রয়োজনীয় পদক্ষেপগুলি এখানে:

  • অ্যাপ্লিকেশন ইনস্টল করুন
  • আপনার টাইমস্ট্যাম্পগুলি পরিবর্তন করার জন্য যে ডিরেক্টরিটিতে গিয়েছিলেন সেখানে যান
  • অনুসন্ধান বাক্সে * অনুসন্ধান করুন যাতে এক্সপ্লোরার সমস্ত ফাইল দেখায়
  • সমস্ত ফাইল পাওয়া গেলে, সেগুলি সব নির্বাচন করুন, তার উপর ডান ক্লিক করুন এবং বৈশিষ্ট্যগুলি নির্বাচন করুন
  • কথোপকথনে টাইমস্ট্যাম্পস ট্যাবটি নির্বাচন করুন
  • আপনার তারিখ এবং সময় প্রয়োজন অনুসারে সামঞ্জস্য করুন এবং টাচ এ ক্লিক করুন

ভাল খবর! আপনার সমস্ত ফাইল আপডেট করা হয়েছে! কোনও ইউনিক্স ব্যবহার বা কমান্ড লাইনের প্রয়োজন নেই।


1

অথবা আপনি উইন্ডোজটিতে ইতিমধ্যে নির্মিত সরঞ্জামগুলি একবার ব্যবহার করতে পারেন, আপনার কাছে ইতিমধ্যে কোনও ধরণের একটি "স্পর্শ" সরঞ্জাম থাকলে:

for /r %i in (C:\Path\To\Root\*) do @touch "%i"

অথবা

forfiles /P C:\Path\To\Root /S /C "touch @file"

(এনবি: আপনি যদি কোনও ব্যাচ ফাইল থেকে এটি করছেন এবং forকমান্ডটি ব্যবহার করতে চান তবে আপনার ভেরিয়েবলের জন্য দ্বিগুণ শতাংশ চিহ্ন ব্যবহার করার বিষয়টি নিশ্চিত করুন eg (যেমন %%iপরিবর্তে %i)


1

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

forfiles /c "cmd /c touch @file"

দ্রষ্টব্য, আমি পুনরাবৃত্তির বিকল্পটি ব্যবহার করিনি।


1

পাওয়ারশেল ব্যবহার:

C:\> powershell  (ls your-file-name-here).LastWriteTime = Get-Date

এটি আমার পক্ষে কাজ করে না:The property 'LastWriteTime' cannot be found on this object.
বেন এন

এটা তোলে উইন্ডোজ সার্ভার 2012 সালে আমার জন্য কাজ: .LastWriteTime = পান-ডেট (LS \ backup_db_20150810.sql।)
ThiagoAlves

0

উপরে জন টি এর উত্তর প্রসঙ্গে:

আমি findএকটি \;এবং '' + ' দিয়ে একটি এক্সিকিউটিভ কমান্ড শেষ করার মধ্যে পার্থক্যটি বোঝার চেষ্টা করছিলাম (আমি পরবর্তীটির সম্পর্কে জানতাম না)।

(থেকে এই কাজের ছিল এখানে )

-exec command ;
আদেশ কার্যকর; যদি 0 স্ট্যাটাস ফিরে আসে তবে সত্য অনুসন্ধানের জন্য নিম্নলিখিত সমস্ত যুক্তিগুলি আর্গুমেন্ট ';' দ্বারা গঠিত না হওয়া অবধি কমান্ডটিতে যুক্তি হিসাবে নেওয়া হবে; সম্মুখীন হয়। '{}' স্ট্রিংটি বর্তমান ফাইলের নাম দ্বারা প্রসেস করা হচ্ছে যেখানেই এটি কমান্ডের আর্গুমেন্টগুলিতে ঘটে সেখানেই যুক্ত করা হয়, যেখানে এটি একা রয়েছে, সেখানে অনুসন্ধানের কয়েকটি সংস্করণ হিসাবে।

-exec command {} +
এই-এক্সেক অ্যাকশনের এই রূপটি নির্বাচিত ফাইলগুলিতে নির্দিষ্ট কমান্ডটি চালায়, তবে প্রতিটি নির্বাচিত ফাইলের নাম শেষে অন্তর্ভুক্ত করে কমান্ড লাইনটি নির্মিত হয়; কমান্ডের অনুরোধের মোট সংখ্যা মিলিত ফাইলগুলির সংখ্যার তুলনায় অনেক কম হবে। কমান্ড লাইনটি একইভাবে নির্মিত হয়েছে যেমন xargs তার কমান্ড লাইনগুলি তৈরি করে। কমান্ডের মধ্যে '{}' কেবলমাত্র একটি উদাহরণ অনুমোদিত। কমান্ডটি শুরু ডিরেক্টরিতে কার্যকর করা হয়।

c:\myfolder2 ফাইল a.txtএবং একটি ফোল্ডার বিবেচনা করুনb.txt

  1. find . -type f -exec touch {} +এটি ব্যাখ্যা করা হয়:
    touch a.txt b.txt
    এটি xargs কাজ করার অনুরূপ similar

  2. যেখানে find . -type f -exec touch {} \;ব্যাখ্যা করা হয়:
    touch a.txt
    touch b.txt

সুতরাং, # 1 অনেক দ্রুত (তবে কমান্ডের নীচে execকেবলমাত্র একটি {}প্লেসোল্ডার থাকতে পারে এমন সীমাবদ্ধতাও ভোগ করে )।


ভাল তথ্যের সাথে দুর্দান্ত মন্তব্য, কিন্তু প্রশ্নের উত্তর নয়। যদি এটি মন্তব্য করা হত তবে +1 করতেন।
টনিজি

1
:) এই পোস্টটি করার কোনও স্মৃতি আমার নেই :)
আশুতোষ জিন্দাল

0

বর্তমান ডিরেক্টরি এবং সমস্ত উপ-ডিরেক্টরিগুলির জন্য পাওয়ারশেল ব্যবহার করে:

dir -R | foreach { $_.LastWriteTime = [System.DateTime]::Now }

অথবা আপনি ঠিক পরে একটি ফোল্ডার নির্দিষ্ট করতে পারেন dir

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