सवाल लिनक्स कमांड 'टच' के बराबर विंडोज़?


जब आप Windows पर किसी फ़ाइल के दिनांक-संशोधित फ़ील्ड को अपडेट करना चाहते हैं तो आप क्या उपयोग करते हैं?

  1. आदेशों सी ++, .NET, C #, या Windows के मूल निवासी (Vista अधिमानतः) के माध्यम से सुलभ
  2. उपकरण / अनुप्रयोगों अधिमानतः मुफ़्त, और यदि संभव हो तो खुले स्रोत भी

संपादित करें:  सस्तास्कॉट्समैन द्वारा बताए गए अनुप्रयोगों के लिए पहले से ही एक पृष्ठ है यहाँ

अगर कोई जानता है कि मैं इसे सी ++, सी # के माध्यम से कैसे कर सकता हूं, WSH या कुछ समान, अच्छा और अच्छा, अन्यथा मुझे लगता है कि सब कुछ जुड़ा हुआ प्रश्न में शामिल है।


153
2018-05-29 00:45


मूल


ऊपर वर्णित चार विकल्प, साथ ही चार और अधिक उल्लेख नहीं किए गए, एक समान प्रश्न के उत्तर में पाए जा सकते हैं: "विंडोज रिकर्सिव टच कमांड" - JdeBP
stackoverflow.com/questions/210201/...एक भार का उल्लेख है, सहित REM.>a - barlop


जवाब:


यदि आप विंडोज़ का उपयोग कर फ़ाइल के दिनांक स्टैंप को छूना चाहते हैं, तो कमांड प्रॉम्प्ट पर निम्न आदेश का उपयोग करें:

copy /b filename.ext +,,

(कहा पे filename.ext आपकी फाइल का नाम है)। +,, के लिए एक विशेष झंडा है copy इसे बस बताओ फ़ाइल पर दिनांक / समय अद्यतन करें:

* फ़ाइल के समय और तारीख को बदलना

यदि आप फ़ाइल को संशोधित किए बिना फ़ाइल में वर्तमान समय और दिनांक असाइन करना चाहते हैं, तो निम्न वाक्यविन्यास का उपयोग करें:

copy /b Source+,,

अल्पविराम गंतव्य पैरामीटर को छोड़ने का संकेत देते हैं।

लुमी और जस्टिन द्वारा टिप्पणियों के आधार पर संपादित करें: इसे एक बैच फ़ाइल में रखें, उदाहरण के लिए। touch.cmd

@COPY /B %1+,, %1

यह तब भी काम करता है जब फ़ाइल वर्तमान निर्देशिका में नहीं है (विंडोज 7 पर परीक्षण किया गया है)।


335
2017-09-09 09:13



यह क्या कर रहा है यह कहां दस्तावेज है? (Google "+," इंडेक्स करने में विफल रहता है, और एमएस साइट मुझे सही दिशा में नहीं ले जा रही है क्योंकि 'कॉपी' पर खोज करने से बहुत कुछ उपयोगी नहीं होता है।) मेरा मतलब है, यह बहुत अच्छा काम करता है और मैं इसे ले जाऊंगा बहुत मंजूरी के लिए, लेकिन मैं उत्सुक हूँ। - dash-tom-bang
के लिए दस्तावेज़ीकरण copy: technet.microsoft.com/en-us/library/bb490886.aspx - Joseph Hansen
type touch.bat है @echo off और अगली पंक्ति copy /b %1 +,, - इसे अंदर डाल C:\bin या आप अपनी स्क्रिप्ट के लिए क्या हैं, और फिर आप इसका उपयोग कर सकते हैं touch myfile.txt। - Lumi
Win7 में यह काम नहीं करेगा यदि आप फ़ाइल वाले फ़ोल्डर में नहीं हैं। यह वर्तमान कार्य निर्देशिका में एक प्रतिलिपि बनाएगा।
यदि आपको इसे दूरस्थ फ़ोल्डर (यूएनसी पथ) में करने की आवश्यकता है - आपको कॉपी कमांड के लिए गंतव्य निर्दिष्ट करना होगा - copy /b Source+,, Source - कहा पे Source फ़ाइल के लिए पूरा पथ शामिल है - Justin


मैंने उपयोग किया है और सिफारिश की है unxutils जो सामान्य यूनिक्स उपयोगिताओं के मूल Win32 बंदरगाह हैं। वहां एक है touch वहां कमांड


160
2017-09-09 14:18



लगभग हर यूनिक्स-टू-विंडोज पोर्ट के रूप में, यह गैर-यूनिकोड प्रोग्राम के लिए डिफ़ॉल्ट के रूप में एन्कोडिंग सेट के बाहर फ़ाइल नामों में यूनिकोड वर्णों के साथ काम करने में विफल रहता है। टेस्ट फ़ाइल नाम जो इस तरह के हर उपकरण को यात्रा करेगा: "test тест τεστ.txt" - RomanSt
gnuwin32 यह है। लेकिन वास्तव में, gnuwin32 भी यूनिकोड वर्णों के लिए विफल रहता है। - barlop
2017 से अपडेट विंडोज 10 में हम विंडोज़ के लिए लिनक्स सबसिस्टम का उपयोग कर सकते हैं, जो बैश इंस्टॉल करता है। खिड़कियों के बंदरगाहों के लिए सिग्विन, मिनजीडब्ल्यू, अनैक्सिल या किसी अन्य आंशिक यूनिक्स की आवश्यकता नहीं है। docs.microsoft.com/en-us/windows/wsl/install-win10 - Davos


यदि आप चाहते हैं कि फ़ाइल की अंतिम संशोधित तिथि (जो मेरा मामला था) को बदलना है:

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

92
2018-02-16 15:21



पावरशेल एफटीडब्ल्यू। मेरा मतलब है, गंभीरता से, यूनिक्स शांत है लेकिन पीएस कूलर है। - matt
आप पिछली बार कई फाइलों / फ़ोल्डरों के लिए भी लिख सकते हैं
यह केवल एक फाइल पर काम करेगा। एकाधिक फाइलों के लिए: एलएस * | प्रत्येक ऑब्जेक्ट के लिए {$ _। LastWriteTime = Get-Date} - Eli Algranti
यदि आप इसे बार-बार करना चाहते हैं, तो यह बहुत अच्छी तरह से काम करता है: gci -recu -inc "।"|% {$ _। LastWriteTime = Get-Date} - BrainSlugs83
@ BrainSlugs83: कोड के लिए बैकटिक्स का उपयोग करें: gci -recu -inc "*.*" | % { $_.LastWriteTime = Get-Date } - alldayremix


type nul >>file & copy file +,,
  • बनाता है file अगर यह अस्तित्व में नहीं है।
  • अकेले फ़ाइल सामग्री छोड़ देता है।
  • बस उपयोग करता है cmd निर्मित इन।
  • दोनों अंतिम पहुंच तथा सृष्टि बार अद्यतन

अद्यतन करें

गाह! यह केवल पढ़ने-योग्य फ़ाइलों पर काम नहीं करता है, जबकि touch कर देता है। मैं सुझाव देता हूँ:

:touch
if not exist "%~1" type nul >>"%~1"& goto :eof
set _ATTRIBUTES=%~a1
if "%~a1"=="%_ATTRIBUTES:r=%" (copy "%~1"+,,) else attrib -r "%~1" & copy "%~1"+,, & attrib +r "%~1"

52
2017-11-25 10:51



यह एक दयालु बात है कि प्रतिलिपि xcopy के तरीके को आर आर विशेषता को अनदेखा नहीं कर सकती है। या, यह एक दयालु बात है कि xcopy अजीब का समर्थन नहीं करता है filename +,, वाक्य - विन्यास। - Abel
दुर्भाग्यवश यह काम नहीं करता है (कम से कम विंडोज 7 में नहीं)। ऐसा लगता है कि कमांड दुभाषिया रीडायरेक्शन के गंतव्य के टाइमस्टैम्प को अपडेट नहीं करता है अगर फ़ाइल वास्तव में संशोधित नहीं होती है (यानी, रीडायरेक्ट करने के लिए डेटा नहीं है)। - Synetech


@ पानी का छींटा-टॉम-धमाके:

यहां रहस्यमय '+' और अल्पविरामों की तकनीक की व्याख्या है:

कॉपी / बी स्रोत +,

अल्पविराम का संकेत मिलता है   गंतव्य पैरामीटर।

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

और यह तकनीक की कॉपी कमांड संदर्भ है: http://technet.microsoft.com/en-us/library/bb490886.aspx


32
2017-07-13 14:54



अब यह सिर्फ सिंटैक्स गड़बड़ है। गंभीरता से, वे क्या सोच रहे थे? यह भी ध्यान दें कि एक ही प्रलेखन "गंतव्य: आवश्यक" कहता है ... मैं आश्चर्यचकित हूं। - sth
यह Vista में भी काम नहीं कर रहा है ... मुझे आश्चर्य है कि वे अपनी इंद्रियों में आए हैं? - quillbreaker
विंडोज 7 में काम करता है - Imran
यह कॉमा के बिना भी मेरे लिए काम करता है: फ़ाइल कॉपी करें .ext + तो दस्तावेज वास्तविक व्यवहार से बहुत दूर है क्योंकि व्यवहार किसी भी उचित उम्मीद से है। - Abgan
यह विंडोज सर्वर 2008 में काम करता था, लेकिन केवल तभी जब आप फ़ाइल वाले फ़ोल्डर में हैं - FrinkTheBrave


यदि आप इसे स्वयं कोडिंग करना चाहते हैं, तो .NET प्रदान करता है File.SetLastAccessTime, File.SetCreationTime तथा File.SetLastWriteTime तरीकों।


22
2017-07-10 11:52





यहां शक्तियों का उपयोग करके एक पुनरावर्ती संस्करण है ... यह सभी फ़ाइलों और उपनिर्देशिकाओं के लिए अंतिम संशोधित समय को बदल देगा, और इस निर्देशिका की उपनिर्देशिकाओं के भीतर फ़ाइलें

ps c:myDir> Get-ChildItem . * -recurse | ForEach-Object{$_.LastWriteTime = get-date}

21
2017-09-09 09:18



कम verbose लेकिन अभी तक केवल मानक पावरहेल shorthands का उपयोग कर: ls * -recurse | % { $_.LastWriteTime = Get-Date } - Jonas


मैंने अपनी बैच स्क्रिप्ट में एक खाली फ़ाइल बनाने की कोशिश की। आप इसका उपयोग कर सकते हैं:

ECHO text>file1.txt

15
2017-09-09 09:17



यह एफएआर द्वारा सबसे अच्छी त्वरित विधि है .. मुझे बस एक .gitignore फ़ाइल बनाने की आवश्यकता है, और विंडोज 7 शिकायत करता है "फ़ाइल नाम दर्ज करना चाहिए" इत्यादि। echo pie>.gitignoreएक इलाज किया - धन्यवाद!
@Alex यह असंबंधित है, लेकिन विंडोज़ त्रुटि है क्योंकि फ़ाइल एक अवधि के साथ शुरू होती है। विंडोज एक्सप्लोरर में चारों ओर घूमने के लिए एक अजीब हैक: फ़ाइल को एक अवधि के साथ भी समाप्त करें। तो टाइप करें .gitignore. और जब आप एंटर दबाते हैं तो विंडोज पिछली अवधि को हटा देता है। पागल, लेकिन यह काम करता है। - Brad Cupit
मेरी इच्छा है कि मैं यह पर्याप्त अपवर्त दे सकता हूं कि यह लोकप्रियता में बड़े खिलाड़ियों को पकड़ लेगा। - Jonathan Mee
हालांकि यह एक खाली फ़ाइल नहीं बनाता है, file1.txt में "टेक्स्ट" है। - Joshua Meyers