tipo online jpg formato extension como cambiar archivo file batch-file cmd

file - online - como cambiar el tipo de archivo en windows 7



Reemplazar archivo viejo con archivo nuevo (2)

Estoy intentando escribir una secuencia de comandos para reemplazar contenido de archivos antiguos con contenido de archivos nuevos que aparece en el siguiente formato:

Archivo antiguo: algo.txt
Nuevo archivo: something.txt.new

El archivo antiguo debe reemplazarse con el contenido del archivo nuevo
Nuevo nombre de archivo a cambiar de nombre sin nuevo
El archivo viejo necesita ser borrado

La secuencia de comandos siguiente no funciona: ¿podría reescribir por favor?

@echo off setlocal enabledelayedexpansion set FOLDER_PATH=D:/test for %%f in (%FOLDER_PATH%*) do if %%f neq %~nx0 ( set basename=test ren *.txt.new !basename!.txt ) PAUSE

Tengo muchos archivos en la carpeta y necesito iterar a través de cada archivo, solo necesito que la variable del nombre base deba llenarse con el nombre del nombre del archivo anterior en cada iteración.


  1. Te perdiste un / en %FOLDER_PATH%/* .
  2. Desea cambiar el nombre de los archivos *.new , ¿por qué no utilizar este patrón en lugar de * ? Si está interesado en archivos que coinciden con el patrón *.txt.new , especifique esto en lugar de * .
  3. No hay necesidad de un basename variable; simplemente use %%~nf para eliminar el (último) sufijo ( .new ).
  4. El comando ren arroja un error en caso de que el archivo de destino ya exista; ya que desea que se sobrescriba, use move /Y lugar. Agregue > nul para ocultar el resumen 1 file(s) moved. .
  5. Elimine la consulta if después de haber resuelto el elemento 2.

Con todo, su script se puede reducir a:

@echo off set "FOLDER_PATH=D:/test" rem // Ensure to specify the correct pattern, `*.new` or `*.txt.new`: for %%f in ("%FOLDER_PATH%/*.txt.new") do ( > nul move /Y "%%~f" "%%~nf" ) pause


@echo off setlocal set FOLDER_PATH=D:/test for %%f in (%FOLDER_PATH%/*.new) do if "%%~ff" neq "%~f0" ( ECHO move /Y "%%~ff" "%%~dpnf" ) PAUSE

o

@echo off setlocal set FOLDER_PATH=D:/test for %%f in (%FOLDER_PATH%/*.new) do if "%%~ff" neq "%~f0" ( if exist "%%~dpnf" ECHO del "%%~dpnf" ECHO rename "%%~ff" "%%~nf" ) PAUSE

Tenga en cuenta que los comandos de move operativo ( del y rename ) son meramente ECHO ed para la depuración.

También tenga en cuenta que if "%%~ff" neq "%~f0" se puede omitir iterando *.new archivos como %~f0 tiene una extensión de .bat o .cmd (pruebe echo %~x0 %~f0 ).

Recursos (lectura obligatoria):