Vérifiez si un fichier existe ou non dans Windows PowerShell?
J'ai ce script qui permet de comparer des fichiers dans les deux zones du disque et copie le fichier le plus récent sur celui avec le plus vieux date de modification.
$filestowatch=get-content C:\H\files-to-watch.txt
$adminFiles=dir C:\H\admin\admin -recurse | ? { $fn=$_.FullName; ($filestowatch | % {$fn.contains($_)}) -contains $True}
$userFiles=dir C:\H\user\user -recurse | ? { $fn=$_.FullName; ($filestowatch | % {$fn.contains($_)}) -contains $True}
foreach($userfile in $userFiles)
{
$exactadminfile= $adminfiles | ? {$_.Name -eq $userfile.Name} |Select -First 1
$filetext1=[System.IO.File]::ReadAllText($exactadminfile.FullName)
$filetext2=[System.IO.File]::ReadAllText($userfile.FullName)
$equal = $filetext1 -ceq $filetext2 # case sensitive comparison
if ($equal) {
Write-Host "Checking == : " $userfile.FullName
continue;
}
if($exactadminfile.LastWriteTime -gt $userfile.LastWriteTime)
{
Write-Host "Checking != : " $userfile.FullName " >> user"
Copy-Item -Path $exactadminfile.FullName -Destination $userfile.FullName -Force
}
else
{
Write-Host "Checking != : " $userfile.FullName " >> admin"
Copy-Item -Path $userfile.FullName -Destination $exactadminfile.FullName -Force
}
}
Ici est le format de files-to-watch.txt
content\less\_light.less
content\less\_mixins.less
content\less\_variables.less
content\font-awesome\variables.less
content\font-awesome\mixins.less
content\font-awesome\path.less
content\font-awesome\core.less
Je voudrais modifier ce afin qu'il évite de faire cela si le fichier n'existe pas dans les deux domaines, et affiche un message d'avertissement. Quelqu'un peut-il me dire comment je peux vérifier si un fichier existe à l'aide de PowerShell?
source d'informationauteur Samantha J T Star
Vous devez vous connecter pour publier un commentaire.
Simplement pour offrir l'alternative à la
Test-Path
applet de commande (puisque personne n'a mentionné):N'a (presque) la même chose que
sauf pas de support pour les caractères génériques
Utilisation Test-Path:
De placer le code ci-dessus dans votre
ForEach
boucle doit faire ce que vous voulezVous souhaitez utiliser Test-Path.
Le standard pour voir si un fichier existe, c'est avec le
Test-Path
applet de commande.Vous pouvez utiliser le
Test-Path
cmd-let. Donc, quelque chose comme...Test-Path peut donner étrange réponse. E. g. "Test-Path c:\temp\ -PathType feuille" donne de faux, mais "Test-Path c:\temp* -PathType feuille" donne le vrai. Triste 🙁