Cette question a déjà une réponse ici:
- Windows équivalent de la commande Linux 'touch'? 31 réponses
Dans PowerShell, existe-t-il un équivalent de touch
?
Par exemple, sous Linux, je peux créer un nouveau fichier vide en appelant:
touch filename
Sous Windows, cela est assez délicat. Habituellement, je viens d'ouvrir une nouvelle instance de Notepad et de sauvegarder un fichier vide.
Existe-t-il donc une méthode de programmation dans PowerShell?
Je ne cherche pas à faire correspondre exactement le comportement des contacts, mais juste à trouver l'équivalent le plus simple possible pour créer des fichiers vides.
windows
windows-8
powershell
powershell-3.0
Jsalonen
la source
la source
touch
sous Linux.touch
sur un fichier existant, il mettra à jour la dernière heure d'écriture sans modifier le fichier, voir les liens de @amiregelz. Cette question a un classement Google élevé pourpowershell touch
, je voulais alerter les copier / coller que seulement cette moitié peut détruire des données, quand * nix touch ne le fait pas. Voir @LittleBoyLost réponse qui gère lorsque le fichier existe déjà.Réponses:
L'utilisation du redirecteur ">>" ajoute le problème de suppression d'un fichier existant:
la source
$null > filename
fonctionne très bien..gitignore
utilisant cette commande et vous vous demandez pourquoi cela ne fonctionne pas. BOM est la raison.Pour créer un fichier vide:
Pour mettre à jour l'horodatage d'un fichier:
la source
(gi MyFolder).LastWriteTime = Get-Date
. Vous pouvez aussi l'utiliser pour les fichiers.ni example.txt
Voici une version qui crée un nouveau fichier s'il n'existe pas ou met à jour l'horodatage s'il existe.
la source
Touch
n'est pas un verbe "approuvé" (ce n'est pas une exigence importante: msdn.microsoft.com/en-us/library/ms714428. aspx ).File
est bien, d'ailleurs. Je recommande les nomsSet-File
ouSet-LastWriteTime
ou, mon préféré,Update-File
. Aussi, je recommanderaisAdd-Content $file $null
au lieu deecho $null > $file
. Enfin, définissez un alias avecSet-Alias touch Update-File
si vous souhaitez continuer à utiliser la commandetouch
New-Alias -Name Touch Touch-File
Dans PowerShell, vous pouvez créer une fonction tactile similaire en tant que telle:
Usage:
touch myfile.txt
La source
la source
function touch { if((Test-Path -Path ($args[0])) -eq $false) { set-content -Path ($args[0]) -Value ($null) } }
je préfère
pour cette tâche. Pour travailler avec des fichiers non vides, vous pouvez utiliser
fc
est simplement un alias pour Format-Custom . Je l'ai choisi parce que c'est une commande courte qui ne fait rien dans ce contexte, un noop . C'est aussi bien parce que si vous oubliez la redirectionau lieu de vous donner une erreur, encore une fois, cela ne fait rien. Certains autres alias qui fonctionneront sont
la source
Il y a déjà un tas de réponses dignes, mais j'aime bien le pseudonyme de New-Item qui est juste: ni
Vous pouvez également renoncer à la déclaration de type de fichier (ce qui, je suppose, est implicite lorsqu'une extension est ajoutée). Par conséquent, pour créer un fichier javascript portant le nom "x" dans mon répertoire actuel, je peux simplement écrire:
3 caractères plus rapide que le toucher!
la source
ni : The file 'x.js' already exists
J'ai mis en place diverses sources et les résultats suivants ont répondu à mes besoins. Je devais définir la date d'écriture d'une DLL créée sur une machine dans un fuseau horaire différent:
Bien sûr, vous pouvez également le configurer pour plusieurs fichiers:
la source
Il semble qu'un tas de réponses ici ne tiennent pas compte du codage de fichier.
Je viens de rencontrer ce problème, pour diverses autres raisons, mais
les deux produisent un fichier UTF-16-LE, tandis que
produit un fichier UTF-8.
Pour une raison quelconque
fc > $file
etfc >> $file
, semblent également produire des fichiers UTF-8.vous donne un fichier UTF-8-BOM, tandis que
vous donne un fichier UTF-8. Les autres encodages valides (mais non testés) pris en charge par Out-File sont les suivants: [[-Encoding] {unknown | chaîne | unicode | bigendianunicode | utf8 | utf7 | utf32 | ascii | par défaut | oem}]. Vous pouvez également diriger des éléments vers Out-File pour donner au fichier des données de texte à stocker, ainsi qu'un indicateur -append. Par exemple:
Cet exemple ne met pas à jour l'horodatage pour une raison quelconque, mais celle-ci le fait:
Bien que cela ait l’effet secondaire d’ajouter "foo" à la fin du fichier.
Si vous n’êtes pas sûr de l’encodage que vous possédez, j’ai trouvé que VS-Code possède une fonction astucieuse dans laquelle, dans le coin inférieur droit, il est indiqué quel est l’encodage. Je pense que Notepad ++ a également une fonctionnalité similaire.
la source
Set-Content -Path $file -value $null
effectue le travail et n’affecte pas le codage du fichier. Vérifiez également la version ss64 detouch
.Ouvrez votre fichier de profil:
Ajoutez la ligne suivante:
Enregistrez-le et rechargez votre profil $ afin de pouvoir l'utiliser immédiatement. (Pas besoin de fermer et d'ouvrir PowerShell)
Pour ajouter un nouveau fichier dans le type de répertoire actuel:
Pour ajouter un nouveau fichier dans le type de répertoire 'myfolder':
Si un fichier portant le même nom existe déjà, il ne sera pas oublié. Au lieu de cela, vous obtiendrez une erreur.
J'espère que ça aide
Bonus:
Vous pouvez faire l'équivalent de 'mkdir' en ajoutant la ligne suivante:
Même utilisation:
la source
Ne supprimera pas le contenu du fichier mais ne mettra pas à jour la date non plus.
la source
Pour le scénario que vous avez décrit (lorsque le fichier n'existe pas), c'est simple et rapide:
Toutefois, l’autre utilisation courante
touch
consiste à mettre à jour l’horodatage du fichier. Si vous essayez d'utiliser monsc
exemple de cette façon, le contenu du fichier sera effacé.la source
sc
signifie Edit: compris ("Set Content")Pour créer un fichier vide dans Windows, la procédure rapide est la suivante:
Le zéro étant la taille du fichier en octets, il est donc également utile de créer un fichier volumineux (ils ne seront pas utiles pour tester la compression car ils ne contiennent pas de données réelles et ne compresseront pratiquement rien)
la source
La page Web http://xahlee.info/powershell/PowerShell_for_unixer.html suggère:
et cela crée en effet un nouveau fichier de taille zéro.
Cela n’exécute pas l’autre fonction d’Unix
touch
, à savoir mettre à jour l’horodatage si le nom de fichier existe déjà, mais la question implique que l’utilisateur souhaite simplement créer un fichier de taille zéro de manière interactive, sans recourir au Bloc-notes.la source
J'ai utilisé le nom "Write-File" car "Touch" n'est pas un verbe approuvé de PowerShell . Je l'alias toujours comme contact, cependant.
Touch.psm1
Usage:
Les soutiens:
Credential
pour les chemins de réseauVerbose
,Debug
etWhatIf
drapeauxla source
New-Item
commande a été proposée dans quatre réponses précédentes. Vous avez fourni un wrapper de 20 lignes pour cela. Pouvez-vous expliquer un peu plus clairement les avantages de votre solution par rapport aux solutions précédentes? Par exemple, quels sont cesVerbose
,Debug
et desWhatIf
drapeaux, etc?New-Item
fait que cela met à jour l'horodatage des fichiers existants.