To pytanie ma już odpowiedź tutaj:
- Odpowiednik systemu Windows „dotyk” w systemie Windows? 31 odpowiedzi
Czy w PowerShell jest odpowiednik touch
?
Na przykład w systemie Linux mogę utworzyć nowy pusty plik, wywołując:
touch filename
W systemie Windows jest to dość niezręczne - zwykle po prostu otwieram nowe wystąpienie notatnika i zapisuję pusty plik.
Czy jest więc programowy sposób w PowerShell, aby to zrobić?
Nie chcę dokładnie dopasować zachowania dotyku, ale po prostu znaleźć najprostszy możliwy odpowiednik do tworzenia pustych plików.
windows
windows-8
powershell
powershell-3.0
jsalonen
źródło
źródło
touch
w Linuksie.touch
na istniejącym pliku, zaktualizuje on ostatni czas zapisu bez modyfikacji pliku, zobacz linki z @amiregelz. To pytanie ma wysoki ranking Googlepowershell touch
, chciałem ostrzec kopiujących / wklejających, że tylko ta połowa może zniszczyć dane, gdy * nix touch nie. Zobacz odpowiedź @LittleBoyLost, która obsługuje, gdy plik już istnieje.Odpowiedzi:
Użycie dołączającego readresatora „>>” rozwiązuje problem polegający na usunięciu istniejącego pliku:
źródło
$null > filename
działa świetnie..gitignore
za pomocą tego polecenia i zastanawiasz się, dlaczego to nie zadziała. BOM jest powodem.Aby utworzyć pusty plik:
Aby zaktualizować znacznik czasu pliku:
źródło
(gi MyFolder).LastWriteTime = Get-Date
. Możesz użyć tego również do plików.ni example.txt
Oto wersja, która tworzy nowy plik, jeśli nie istnieje, lub aktualizuje znacznik czasu, jeśli istnieje.
źródło
Touch
nie jest to czasownik „zatwierdzony” (nie jest to znaczący wymóg: msdn.microsoft.com/en-us/library/ms714428. aspx ).File
jest dobrze, przy okazji. Polecam nazwiskaSet-File
lubSet-LastWriteTime
lub, mój ulubiony,Update-File
. Również poleciłbymAdd-Content $file $null
zamiastecho $null > $file
. Na koniec ustaw alias,Set-Alias touch Update-File
jeśli chcesz nadal używać poleceniatouch
New-Alias -Name Touch Touch-File
W PowerShell możesz utworzyć podobną funkcję dotykową jako taką:
Stosowanie:
touch myfile.txt
Źródło
źródło
function touch { if((Test-Path -Path ($args[0])) -eq $false) { set-content -Path ($args[0]) -Value ($null) } }
wolę
do tego zadania. Do pracy z niepustymi plikami możesz użyć
fc
jest po prostu aliasem formatu niestandardowego . Wybrałem go, ponieważ jest to krótkie polecenie, które nic nie robi w tym kontekście, noop . Jest to również miłe, ponieważ jeśli zapomnisz o przekierowaniuzamiast dawać ci błąd, znowu nic nie robi. Inne aliasy, które będą działać, to
źródło
Istnieje już wiele godnych odpowiedzi, ale podoba mi się alias New-Item, który jest po prostu: ni
Możesz także zrezygnować z deklaracji typu pliku (który, jak zakładam, jest domyślny po dodaniu rozszerzenia), więc aby utworzyć plik javascript o nazwie „x” w moim bieżącym katalogu, mogę po prostu napisać:
3 znaki szybciej niż dotyk!
źródło
ni : The file 'x.js' already exists
Zebrałem różne źródła i podsumowałem następujące, które spełniły moje potrzeby. Musiałem ustawić datę zapisu biblioteki DLL, która została zbudowana na komputerze w innej strefie czasowej:
Oczywiście można również ustawić dla wielu plików:
źródło
Otwórz plik profilu:
Dodaj następujący wiersz:
Zapisz go i ponownie załaduj swój profil $, aby móc z niego natychmiast korzystać. (Nie trzeba zamykać i otwierać programu PowerShell)
Aby dodać nowy plik do bieżącego katalogu:
Aby dodać nowy plik do katalogu „myfolder”, wpisz:
Jeśli plik o tej samej nazwie już istnieje, nie zostanie on zastąpiony. Zamiast tego pojawi się błąd.
Mam nadzieję, że to pomoże
Wskazówka bonusowa:
Możesz zrobić odpowiednik „mkdir”, dodając następujący wiersz:
To samo zastosowanie:
źródło
Nie usunie zawartości pliku, ale też nie zaktualizuje daty.
źródło
Wygląda na to, że garść odpowiedzi tutaj nie uwzględnia kodowania plików.
Właśnie zetknąłem się z tym problemem z różnych innych powodów, ale
oba tworzą plik UTF-16-LE, podczas gdy
tworzy plik UTF-8.
Z jakiegokolwiek powodu
fc > $file
ifc >> $file
wydaje się również produkować pliki UTF-8.daje ci plik UTF-8-BOM, podczas gdy
daje plik UTF-8. Inne prawidłowe (ale nieprzetestowane) kodowania obsługiwane przez Out-File to: [[-Encoding] {nieznany | ciąg | Unicode | bigendianunicode | utf8 | utf7 | utf32 | ascii | domyślne | oem}]. Możesz także przesyłać elementy do pliku wyjściowego, aby przekazać plikowi dane tekstowe do przechowywania, a także flagę -append. Na przykład:
ten przykład z jakiegoś powodu nie aktualizuje znacznika czasu, ale ten:
Chociaż ma efekt uboczny, dodając „foo” na końcu pliku.
Jeśli nie masz pewności, jakie masz kodowanie, odkryłem, że VS-Code ma ciekawą funkcję, w której w prawym dolnym rogu jest napisane, co to jest kodowanie. Myślę, że Notepad ++ ma również podobną funkcję.
źródło
Set-Content -Path $file -value $null
wykonuje zadanie i nie wpływa na kodowanie plików. Sprawdź także wersję ss64touch
.W opisanym scenariuszu (gdy plik nie istnieje) jest to szybkie i łatwe:
Jednak innym powszechnym zastosowaniem
touch
jest aktualizacja sygnatury czasowej pliku. Jeśli spróbujesz użyć mojegosc
przykładu w ten sposób, spowoduje to usunięcie zawartości pliku.źródło
sc
znaczy Edycja: wymyśliłem to („Ustaw zawartość”)aby utworzyć pusty plik w systemie Windows, najszybszy sposób jest następujący:
Zerem jest rozmiar pliku w bajtach, więc jest to również przydatne do tworzenia dużych plików (nie będą one przydatne do testowania kompresji, ponieważ nie zawierają rzeczywistych danych i spakują się prawie do zera)
źródło
Strona http://xahlee.info/powershell/PowerShell_for_unixer.html sugeruje:
i to rzeczywiście tworzy nowy plik o rozmiarze zero.
Nie wykonuje to innej funkcji Uniksa
touch
, mianowicie aktualizuje znacznik czasu, jeśli nazwa pliku już istnieje, ale pytanie sugeruje, że użytkownik chce tylko interaktywnie utworzyć plik o zerowej wielkości bez uciekania się do Notatnika.źródło
Użyłem nazwy „Write-File”, ponieważ „Touch” nie jest zatwierdzonym czasownikiem PowerShell . Nadal jednak nazywam to dotykiem.
Touch.psm1
Stosowanie:
Obsługuje:
Credential
dla ścieżek sieciowychVerbose
,Debug
iWhatIf
flagiźródło
New-Item
Komenda została zaoferowana w czterech poprzednich odpowiedzi. Podałeś mu 20-liniowe opakowanie. Czy możesz wyjaśnić nieco jaśniej, jaką przewagę ma twoje rozwiązanie nad wcześniejszymi? Na przykład, co to są teVerbose
,Debug
orazWhatIf
flagi, itp?New-Item
jest to, że aktualizuje znacznik czasu istniejących plików.