Renommer les 20 premiers caractères de chaque nom de fichier dans un fichier
Je suis en train d'écrire un script en powershell pour supprimer les 20 premiers caractères de chaque nom de fichier MP3 dans un dossier, j'ai créé un fichier " test.ps' et inséré le code powershell ci-dessous,
gci *.mp3 | rename-item -newname { [string]($_.name).substring(20) }
Lorsque j'exécute ce fichier dans powershell.exe il ne se passe rien,
Peut aider quelqu'un? Merci.
OriginalL'auteur rusty009 | 2012-05-25
Vous devez vous connecter pour publier un commentaire.
Cela peut vous obtenir a commencé. (Il y a probablement beaucoup plus concis manières, mais cela fonctionne et qu'il est lisible quand vous en avez besoin pour maintenir plus tard. 🙂 )
J'ai créé un dossier
C:\TempFiles
, et créé les fichiers suivants dans le dossier:(Je les ai créés à l'ancienne, je le crains. <g>. J'ai utilisé
d'une invite de commande.)
J'ai ensuite ouvert
PowerShell ISE
à partir du menu démarrer, et exécuté ce script. Il crée un tableau ($files
), contenant uniquement les noms des fichiers et les processus, chacun d'eux:Cette gauche le dossier contenant:
Afin d'exécuter un script à partir de la ligne de commande, vous avez besoin de changer certaines de Windows par défaut des paramètres de sécurité. Vous pouvez les trouver en utilisant
PowerShell ISE
'fichier d'aide (dans le menu) et la recherche deabout_scripts
ou par l'exécution dehelp about_scripts
de laISE
invite. Voir la sous-sectionHow To Run A Script
dans le fichier d'aide (il est beaucoup plus facile à lire).Je ne sais pas, je le crains. Je viens d'ajouter des fichiers dans le dossier nommé "Nouveau Test 21.txt" par le biais "d'un Nouveau Test 25.txt" et exécuté le même script en PS ISE, et il a bien fonctionné ici, en laissant les fichiers "Test 21.txt" par le biais de "Test 25.txt".
OriginalL'auteur Ken White
Votre code fonctionne réellement. Deux choses...
test.ps1
.Get-ChildItem
, il sera exécuté dans le répertoire courant.J'ai testé votre ligne en faisant un tas de fichiers mp3, ce
lire le dernier paragraphe de ma réponse.
OriginalL'auteur Andy Arismendi
Je voudrais utiliser un plus "sûre" façon (vous recevrez un message d'erreur si le nom de fichier est plus courte que la longueur en question, vous êtes également le ciblage de l'extension de fichier comme une partie du nombre total de caractères). Vérifiez si le nom de base de chaque fichier est supérieure à 21 caractères (si vous supprimez les 20 premiers, il peut être encore un nom avec un caractère de long). Il peut échouer si le répertoire contient un fichier avec le même nom après avoir retiré les 20 premiers, vous pouvez développer votre propre):
OriginalL'auteur Shay Levy
//supprimer (à remplacer avec vide char) 20 premières chartes dans tous les fichiers de sorcière de l'est a commencé avec "dbo."
//powershell
OriginalL'auteur Pit J