सवाल PowerShell के साथ एक खाली फ़ाइल बनाने के लिए लिनक्स `स्पर्श` के बराबर? [डुप्लिकेट]


इस प्रश्न का उत्तर यहां दिया गया है:

PowerShell में बराबर है touch?

उदाहरण के लिए लिनक्स में मैं आविष्कार करके एक नई खाली फ़ाइल बना सकता हूं:

touch filename

विंडोज़ पर यह बहुत अजीब है - आमतौर पर मैं सिर्फ नोटपैड का एक नया उदाहरण खोलता हूं और एक खाली फ़ाइल को सहेजता हूं।

तो क्या ऐसा करने के लिए PowerShell में एक प्रोग्रामेटिक तरीका है?

मैं स्पर्श के व्यवहार से बिल्कुल मेल नहीं खा रहा हूं, लेकिन खाली फ़ाइलों को बनाने के लिए सबसे सरल संभव समकक्ष खोजने के लिए।


135
2017-11-07 19:28


मूल


देख यूनिक्स टच कमांड का विंडोज संस्करण और लिनक्स कमांड 'टच' के बराबर विंडोज़? - amiregelz
धन्यवाद। मैंने उन्हें देखा, लेकिन अधिकांश उत्तर कमांड-प्रॉम्प्ट पर केंद्रित हैं। मैं एक पावरशेल समाधान चाहता हूं जिसके लिए मुझे नए एप्लिकेशन इंस्टॉल करने की आवश्यकता नहीं है। - jsalonen
प्रश्न को कम किया गया - दोनों विशेषताएं केवल कोड की कुछ और पंक्तियां हैं, केवल आधे, esp दोनों को लागू करें। जब लापता आधा अन्य आदेश इतना खतरनाक है। - yzorg
@yzorg: दोनों सुविधाओं से आपका क्या मतलब है? मैं केवल यह पूछ रहा था कि पीएस में एक खाली फाइल कैसे बनाएं जिससे आप कर सकते हैं touch लिनक्स में - jsalonen
@jsalonen उपयोग * निक्स touch किसी मौजूदा फ़ाइल पर यह फ़ाइल को संशोधित किए बिना अंतिम लेखन समय अपडेट करेगा, @amiregelz से लिंक देखें। इस सवाल के लिए एक उच्च गूगल रैंकिंग है powershell touch, मैं प्रतिलिपि / पेस्ट -र्स को सतर्क करना चाहता था कि इसमें से केवल आधा डेटा नष्ट कर सकता है, जब * निक्स स्पर्श नहीं करता है। @LittleBoyLost उत्तर देखें जो फ़ाइल पहले से मौजूद होने पर संभालता है। - yzorg


जवाब:


एपेंड रीडायरेक्टर का उपयोग करना ">>" उस समस्या को हल करता है जहां एक मौजूदा फ़ाइल हटा दी जाती है:

echo $null >> filename

141
2017-11-07 19:36



एक कमांड प्रॉम्प्ट से संभवत: एक बैच फ़ाइल से 'इको नल> फ़ाइल नाम' के रूप में भी जाना जाता है। पावरशेल संस्करण देखने के लिए कूल, धन्यवाद! - Mark Allen
यदि फ़ाइल पहले से मौजूद है तो स्पर्श इससे अलग है - jk.
गूंज अनावश्यक है, $null > filename बहुत अच्छा काम करता है। - alirobe
यह मेरे लिए यूनिकोड बीओएम 0xFEFF के 2 बाइट लिखता है। - mlt
महत्वपूर्ण नोट: कई यूनिक्स उपकरण बीओएम से निपटते नहीं हैं। इसमें उदाहरण के लिए गिट भी शामिल है (यहां तक ​​कि विंडोज़ पर भी)। यदि आप बीओएम को पहचानने वाले टूल के साथ इस तरीके से बनाई गई फ़ाइलों का उपयोग करते हैं तो आपको समस्याएं आ रही हैं। जैसे आप अपना निर्माण करने की कोशिश करते हैं .gitignore इस आदेश का उपयोग करके और आश्चर्य करें कि यह क्यों काम नहीं करेगा। बीओएम कारण है। - martixy


यहां एक ऐसा संस्करण है जो एक नई फ़ाइल बनाता है यदि यह अस्तित्व में नहीं है या टाइमस्टैम्प को अपडेट करता है तो यह मौजूद है।

Function Touch-File
{
    $file = $args[0]
    if($file -eq $null) {
        throw "No filename supplied"
    }

    if(Test-Path $file)
    {
        (Get-ChildItem $file).LastWriteTime = Get-Date
    }
    else
    {
        echo $null > $file
    }
}

74
2018-03-25 12:47



यूनिक्स टच प्रोग्राम (एक अलग नाम के बावजूद) को दोहराने के लिए यह सही उत्तर है, लेकिन सवाल केवल एक नई फाइल बनाने के लिए उन्मुख है। - Jamie Schembri
बहुत, बहुत छोटे क्विबल: जबकि टच-फाइल पीएस के वर्ब-नाम नामकरण सम्मेलन के अनुरूप है, Touch एक "अनुमोदित" क्रिया नहीं है (यह नहीं कि यह एक महत्वपूर्ण आवश्यकता है: msdn.microsoft.com/en-us/library/ms714428.aspx)। File ठीक है, बीटीडब्ल्यू। मैं नामों की सिफारिश करता हूं Set-File या Set-LastWriteTime या, मेरे पसंदीदा, Update-File। इसके अलावा, मैं अनुशंसा करता हूं Add-Content $file $null के बजाय echo $null > $file। अंत में, एक उपनाम सेट करें Set-Alias touch Update-File अगर आप कमांड का उपयोग करना जारी रखना चाहते हैं touch - Alan McBee


एक खाली फ़ाइल बनाने के लिए:

New-Item -ItemType file example.txt

फ़ाइल के टाइमस्टैम्प को अपडेट करने के लिए:

(gci example.txt).LastWriteTime = Get-Date

68
2018-01-24 06:39



मुझे लगता है कि यह सबसे अच्छा तरीका है! - Jayesh Bhoot
क्या यह फ़ोल्डर के टाइमस्टैम्प को अपडेट करने के लिए काम करता है? - riahc3
@ riahc3, इसका उपयोग करें: (gi MyFolder).LastWriteTime = Get-Date । आप फ़ाइलों के लिए भी इसका इस्तेमाल कर सकते हैं। - dangph
और भी अधिक pithy: ni example.txt - Nick Cox
यह विधि भयानक बीओएम बाइट्स को जोड़ती नहीं है और एन्कोडिंग खुशी से यूटीएफ -8 प्रतीत होता है। - Davos


PowerShell में आप एक समान टच फ़ंक्शन बना सकते हैं जैसे:

function touch {set-content -Path ($args[0]) -Value ($null)} 

उपयोग:

touch myfile.txt

स्रोत


24
2017-11-07 19:32



यह बहुत अच्छा है, धन्यवाद! बस मैं क्या चाहता था! कोई विचार है कि मैं इस फ़ंक्शन को PowerShell में कैसे इंस्टॉल कर सकता हूं ताकि जब मैं खोल शुरू करता हूं तो यह स्वचालित रूप से लोड हो जाता है? - jsalonen
इसे अपनी $ प्रोफाइल फ़ाइल में जोड़ें। (उस फ़ाइल को संपादित करने के लिए नोटपैड $ प्रोफ़ाइल चलाएं।) - Mark Allen
यह मौजूद होने पर फ़ाइल की सामग्री को हटा देगा। - dangph
या सुरक्षित संस्करण जो मौजूदा फ़ाइल सामग्री को साफ़ नहीं करता है function touch { if((Test-Path -Path ($args[0])) -eq $false) { set-content -Path ($args[0]) -Value ($null) } } - alastairtree


मैं पसंद करता हूं

fc > filename

इस काम के लिए। गैर-खाली फ़ाइलों के साथ काम करने के लिए आप उपयोग कर सकते हैं

fc >> filename

fc बस के लिए एक उपनाम है प्रारूप-कस्टम। मैंने इसे चुना क्योंकि यह एक छोटा सा आदेश है जो इस संदर्भ में कुछ भी नहीं करता है, ए NOOP। यह भी अच्छा है क्योंकि अगर आप भूल जाते हैं अनुप्रेषित

fc filename

आपको एक त्रुटि देने के बजाय, फिर यह कुछ भी नहीं करता है। कुछ अन्य उपनाम वह काम करेगा

ft -> Format-Table
fw -> Format-Wide

10
2017-09-30 05:10





मैंने विभिन्न स्रोतों को एक साथ रखा, और निम्नलिखित के साथ घायल हो गया, जो मेरी जरूरतों को पूरा करता था। मुझे एक डीएलएल की लेखन तिथि निर्धारित करने की आवश्यकता थी जो एक मशीन पर एक अलग समय क्षेत्र में बनाया गया था:

$update = get-date
Set-ItemProperty -Path $dllPath -Name LastWriteTime -Value $update

बेशक, आप इसे कई फाइलों के लिए भी सेट कर सकते हैं:

Get-ChildItem *.dll | Set-ItemProperty -Name LastWriteTime -Value $update

8
2018-01-26 00:33



एक फ़ाइल पर LastWriteTime को बदलने के लिए सबसे शक्तिशाली पावरहेल-इश तरीका के लिए +1 (जो मुझे चाहिए), हालांकि सवाल टच कमांड की नई फ़ाइल निर्माण सुविधा पर केंद्रित है। - Nathan Hartley
एक चर का उपयोग किए बिना? - riahc3


पहले से ही योग्य उत्तर का एक गुच्छा है, लेकिन मुझे नई वस्तु के उपनाम पसंद हैं जो सिर्फ है: ni

आप फ़ाइल प्रकार की घोषणा भी छोड़ सकते हैं (जो मुझे लगता है कि एक एक्सटेंशन जोड़ा जाने पर अंतर्निहित है), इसलिए मेरी वर्तमान निर्देशिका में 'x' के नाम से जावास्क्रिप्ट फ़ाइल बनाने के लिए मैं बस लिख सकता हूं:

ni x.js

स्पर्श से 3 अक्षर तेज!


7
2018-06-15 16:45



यह बेवकूफ नहीं है ni : The file 'x.js' already exists - Steven Penny