Acabei de tentar remover o primeiro caractere de uma lista de nomes de arquivos, mas não funciona:
for %f in (_Telerik.Windows.*.dll) do set "filename=%f" && ren "%f" "%filename:~1%"
Resultado:
C:\Directory\set "filename=_Telerik.Windows.Themes.Windows8Touch.dll" && ren "_Telerik.Windows.Themes.Windows8Touch.dll" "Telerik.Windows.Zip.dll"
A duplicate file name exists, or the file cannot be found.
C:\Directory\set "filename=_Telerik.Windows.Zip.dll" && ren "_Telerik.Windows.Zip.dll" "Telerik.Windows.Zip.dll"
A duplicate file name exists, or the file cannot be found.
Para sua informação, eu já usei setlocal enabledelayedexpansion
.
Como posso obter o primeiro sublinhado desses nomes de arquivo?
enabledelayedexpansion
não altera a maneira como%variables%
funciona – ele introduz uma sintaxe totalmente nova,!variable!
, como uma etapa de expansão separada.Então, se você quiser uma linha Cmd, use
!filename:~1!
.Esteja ciente de que o delay
!variables!
às vezes se expande tarde demais ; em particular, se um regular%variable%
tiver algum!
em seu valor expandido, isso também será processado pela expansão delay.Se isso for para um script .bat ou .cmd, pode ser mais confiável
call
do que uma sub-rotina:ou para usar o PowerShell: