Esta es una pregunta sobre la ejecución de Windows PowerShell en una PC de escritorio con Windows Home de 64 bits.
Estoy cambiando alrededor de cien carpetas de nombres de archivos de fotografías de una cámara y un escáner 005_2.JPG
por un nombre de archivo detallado como Some Kid Riding a Bicycle
.
Estoy usando el comando de Windows PowerShell:
Dir | %{Rename-Item $_ -NewName ("Some Kid Riding a Bicycle-{0}.jpg" -f $nr++)}
Esto funciona bien.
Pero cuando simplemente paso CD\ a la siguiente carpeta y simplemente sustituyo una nueva cadena por el nuevo asunto en la nueva carpeta, el número de "índice" agregado al nombre del archivo no se restablece a "1", sino que aumenta a un nivel superior. número, ni siquiera el siguiente número que sigue al índice de la operación anterior (111 en este caso).
Si el último índice de la última operación fue "111", como en este ejemplo:
-a---- 2/4/2020 8:02 PM 404601 Some Kid Riding a Bicycle-111.jpg
y luego cd\ a una carpeta que contiene 8 archivos:
Mode LastWriteTime Length Name
-a---- 1/16/2020 11:39 PM 598118 018_15.JPG
[6 lines omitted here]
-a---- 1/16/2020 11:39 PM 727598 DSC017.jpg
y correr:
> Dir | %{Rename-Item $_ -NewName ("Some Old Guy Riding a Bicycle-{0}.jpg" -f $nr++)}
en esa carpeta, el siguiente nombre de archivo en la secuencia de salida es:
-a---- 1/16/2020 11:39 PM 598118 Some Old Guy Riding a Bicycle-120.jpg
Parece que el índice avanzó según la cantidad de archivos en la nueva carpeta de destino. Me pregunto si esos últimos caracteres -f $nr++
) están involucrados, pero no he encontrado ninguna referencia a una cadena como esta en mi escasa biblioteca.
¿Cómo soluciono este problema para que comience de nuevo con -1 (o algún otro valor preestablecido)?
Respuesta1
$nr es tu variable y sigues iterando su valor con cada comando. Su alcance es su sesión PWSH. Mientras su sesión esté abierta, el valor $nr sigue aumentando, a menos que asigne un nuevo valor emitiendo la instrucción "$nr = 1".