txt sirven significado que por para lotes los ejemplos crear copiar como comando codigo batch bat archivos archivo abrir command-line batch-file dos cmd

command line - sirven - Abra uno de una serie de archivos usando un archivo por lotes



ejemplos de archivos por lotes (5)

Aquí tienes ... (espero que nadie me gane) ... (Necesitarás guardar el archivo como lasttext.bat o algo así) Esto abrirá / ejecutará el archivo .txt más antiguo.

dir *.txt /b /od > systext.bak FOR /F %%i in (systext.bak) do set sysRunCommand=%%i call %sysRunCommand% del systext.bak /Y

Probablemente solo XP. HE AQUÍ El gran poder de DOS.
Aunque esto toma el último nombre de archivo por fecha, NO por nombre de archivo.

Si desea obtener el nombre de archivo más reciente, cambie / od a / on.
Si desea ordenar algo diferente, agregue un comando "ordenar" a la segunda línea.

Tengo hasta 4 archivos basados ​​en esta estructura (tenga en cuenta que los prefijos son fechas)

  • 0830filename.txt
  • 0907filename.txt
  • 0914filename.txt
  • 0921filename.txt

Quiero abrir el más reciente (0921filename.txt). ¿Cómo puedo hacer esto en un archivo por lotes?

Gracias.


Este método usa la fecha de modificación del archivo real, para descubrir cuál es el último archivo:

@echo off for /F %%i in (''dir /B /O:-D *.txt'') do ( call :open "%%i" exit /B 0 ) :open start "dummy" "%~1" exit /B 0

Este método, sin embargo, elige el último archivo en orden alfabético (o el primero, en orden alfabético inverso), por lo que si los nombres de los archivos son consistentes, funcionará:

@echo off for /F %%i in (''dir /B *.txt^|sort /R'') do ( call :open "%%i" exit /B 0 ) :open start "dummy" "%~1" exit /B 0

De hecho, debes elegir qué método es mejor para ti.


Lo siento, por enviar esta pregunta por correo no deseado, pero realmente tengo ganas de publicar The Real Answer . Si desea que su script BATCH analice y compare las fechas en los nombres de los archivos, puede usar algo como esto:

@echo off rem Enter the ending of the filenames. rem Basically, you must specify everything that comes after the date. set fn_end=filename.txt rem Do not touch anything bellow this line. set max_month=00 set max_day=00 for /F %%i in (''dir /B *%fn_end%'') do call :check "%%i" call :open %max_month% %max_day% exit /B 0 :check set name=%~1 set date=%name:~0,4% set month=%date:~0,2% set day=%date:~2,2% if /I %month% GTR %max_month% ( set max_month=%month% set max_day=%day% ) else if /I %month% EQU %max_month% ( set max_month=%month% if /I %day% GTR %max_day% ( set max_day=%day% ) ) exit /B 0 :open set date=%~1 set month=%~2 set name=%date%%month%%fn_end% start "dummy" "%name%" exit /B 0


Un trazador de líneas, usando el truco EXIT:

FOR /F %%I IN (''DIR *.TXT /B /O:-D'') DO NOTEPAD %%I & EXIT

EDITAR:

@pam: tienes razón, asumí que los archivos estaban en orden de fecha, pero puedes cambiar el comando a:

FOR /F %%I IN (''DIR *.TXT /B /O:-N'') DO NOTEPAD %%I & EXIT

luego tiene la lista de archivos ordenada por nombre en orden inverso.


Use la expresión regular para analizar el entero relevante y compararlos.