Pertanyaan ini sudah ada jawabannya di sini:
Di PowerShell apakah ada yang setara dengan touch
?
Sebagai contoh di Linux saya dapat membuat file kosong baru dengan memohon:
touch filename
Di Windows ini cukup aneh - biasanya saya hanya membuka contoh baru notepad dan menyimpan file kosong.
Jadi apakah ada cara terprogram dalam PowerShell untuk melakukan ini?
Saya tidak mencari cara yang sama persis dengan perilaku sentuhan, tetapi hanya untuk menemukan padanan sesederhana mungkin untuk membuat file kosong.
windows
windows-8
powershell
powershell-3.0
jsalonen
sumber
sumber
touch
di Linux.touch
pada file yang ada itu akan memperbarui waktu penulisan terakhir tanpa memodifikasi file, lihat tautan dari @amiregelz. Pertanyaan ini memiliki peringkat tinggi untuk googlepowershell touch
, saya ingin mengingatkan copy / paste-ers bahwa hanya setengahnya saja yang dapat menghancurkan data, ketika * nix touch tidak. Lihat jawaban @LittleBoyLost yang menangani ketika file sudah ada.Jawaban:
Menggunakan redirector append ">>" menyelesaikan masalah di mana file yang ada dihapus:
sumber
$null > filename
bekerja dengan baik..gitignore
menggunakan perintah ini dan bertanya-tanya mengapa itu tidak berhasil. BOM adalah alasannya.Untuk membuat file kosong:
Untuk memperbarui stempel waktu file:
sumber
(gi MyFolder).LastWriteTime = Get-Date
. Anda dapat menggunakannya untuk file juga.ni example.txt
Berikut adalah versi yang membuat file baru jika tidak ada atau memperbarui timestamp jika memang ada.
sumber
Touch
bukan kata kerja "yang disetujui" (bukan berarti itu persyaratan penting: msdn.microsoft.com/en-us/library/ms714428. aspx ).File
baik-baik saja, btw. Saya merekomendasikan nama-namaSet-File
atauSet-LastWriteTime
atau, favorit saya,Update-File
. Juga, saya akan merekomendasikanAdd-Content $file $null
bukannyaecho $null > $file
. Terakhir, atur alias denganSet-Alias touch Update-File
jika Anda ingin tetap menggunakan perintahtouch
New-Alias -Name Touch Touch-File
Di PowerShell Anda dapat membuat fungsi Touch yang serupa seperti:
Pemakaian:
touch myfile.txt
Sumber
sumber
function touch { if((Test-Path -Path ($args[0])) -eq $false) { set-content -Path ($args[0]) -Value ($null) } }
aku lebih memilih
untuk tugas ini. Untuk bekerja dengan file yang tidak kosong, Anda dapat menggunakan
fc
hanyalah alias untuk Format-Kustom . Saya memilihnya karena itu adalah perintah singkat yang tidak melakukan apa pun dalam konteks ini, noop . Ini juga bagus karena jika Anda lupa pengalihanalih-alih memberi Anda kesalahan, sekali lagi itu tidak melakukan apa-apa. Beberapa alias lain yang akan berhasil adalah
sumber
Sudah ada banyak jawaban yang layak, tetapi saya cukup suka alias Item Baru yang hanya: ni
Anda juga dapat melupakan deklarasi tipe file (yang saya anggap implisit ketika ekstensi ditambahkan), jadi untuk membuat file javascript dengan nama 'x' di direktori saya saat ini, saya cukup menulis:
3 karakter lebih cepat daripada sentuhan!
sumber
ni : The file 'x.js' already exists
Saya mengumpulkan berbagai sumber, dan berakhir dengan yang berikut, yang memenuhi kebutuhan saya. Saya perlu mengatur tanggal penulisan DLL yang dibangun pada mesin di zona waktu yang berbeda:
Tentu saja, Anda juga dapat mengaturnya untuk banyak file:
sumber
Buka file profil Anda:
Tambahkan baris berikut:
Simpan dan muat ulang $ profil Anda untuk langsung menggunakannya. (Tidak perlu menutup dan membuka PowerShell)
Untuk menambahkan file baru dalam jenis direktori saat ini:
Untuk menambahkan file baru di dalam tipe direktori 'myfolder':
Jika file dengan nama yang sama sudah ada, maka file itu tidak akan terlalu berlebihan. Sebaliknya Anda akan mendapatkan kesalahan.
Saya harap ini membantu
Kiat bonus:
Anda dapat membuat yang setara dengan 'mkdir' dengan menambahkan baris berikut:
Penggunaan yang sama:
sumber
Tidak akan menghapus konten file tetapi juga tidak memperbarui tanggal.
sumber
Sepertinya banyak jawaban di sini tidak memperhitungkan penyandian file.
Saya hanya mengalami masalah ini, karena berbagai alasan lain, tetapi
keduanya menghasilkan file UTF-16-LE, sementara
menghasilkan file UTF-8.
Untuk alasan apa pun
fc > $file
danfc >> $file
, tampaknya juga menghasilkan file UTF-8.memberi Anda file UTF-8-BOM, sementara
memberi Anda file UTF-8. Pengkodean lain yang valid (tetapi belum diuji) yang didukung Out-File adalah: [[-Encoding] {unknown | string | unicode | bigendianunicode | utf8 | utf7 | utf32 | ascii | default | oem}]. Anda juga dapat mem-pipe stuff ke Out-File untuk memberi file beberapa data teks untuk disimpan, dan juga flag-append. Sebagai contoh:
contoh ini tidak memperbarui stempel waktu karena alasan tertentu, tetapi yang ini:
Meskipun itu memang memiliki efek samping menambahkan "foo" ke akhir file.
Jika Anda tidak yakin tentang apa pengkodean yang Anda miliki, saya telah menemukan VS-Code memiliki fitur bagus di mana di sudut kanan bawah ia mengatakan apa itu pengkodean. Saya pikir Notepad ++ juga memiliki fitur serupa.
sumber
Set-Content -Path $file -value $null
melakukan pekerjaan dan itu tidak mempengaruhi pengodean file. Periksa juga versi ss64 daritouch
.Untuk skenario yang Anda jelaskan (ketika file tidak ada), ini cepat dan mudah:
Namun, penggunaan umum lainnya
touch
adalah untuk memperbarui stempel waktu file. Jika Anda mencoba menggunakansc
contoh saya seperti itu, itu akan menghapus isi file.sumber
sc
artinya Sunting: mengetahuinya ("Setel Konten")untuk membuat file kosong di windows, cara puasa adalah sebagai berikut:
Yang nol adalah filesize dalam byte, jadi ini juga berguna untuk membuat file besar (mereka tidak akan berguna untuk menguji kompresi karena mereka tidak mengandung data aktual dan akan memampatkan ke apa-apa)
sumber
Laman web http://xahlee.info/powershell/PowerShell_for_unixer.html menyarankan:
dan ini memang membuat file baru berukuran nol.
Ini tidak melakukan fungsi lain dari Unix
touch
, yaitu untuk memperbarui cap waktu jika nama file sudah ada, tetapi pertanyaannya menyiratkan bahwa pengguna hanya ingin membuat file berukuran nol secara interaktif tanpa menggunakan Notepad.sumber
Saya menggunakan nama "Write-File" karena "Sentuh" bukan kata kerja PowerShell yang disetujui . Namun saya masih menyebutnya sebagai sentuhan.
Sentuh.psm1
Pemakaian:
Mendukung:
Credential
untuk jalur jaringanVerbose
,,Debug
danWhatIf
benderasumber
New-Item
perintah telah ditawarkan dalam empat jawaban sebelumnya. Anda telah menyediakan pembungkus 20-baris untuk itu. Bisakah Anda menjelaskan sedikit lebih jelas apa manfaat solusi Anda daripada yang sebelumnya? Sebagai contoh, apa iniVerbose
,Debug
danWhatIf
bendera, dll?New-Item
ini memperbarui cap waktu file yang ada.