Ayuda de archivo por lotes (para declaración)


1

Necesito ayuda con esta declaración en el momento en que se ejecuta en un archivo por lotes, lanzará todas las líneas de un archivo de texto, por ejemplo

file1.txt:

notepad
wordpad

entonces lanzará:

start notepad
start wordpad

Aunque me gustaría poder especificar qué línea ejecutará, en lugar de ejecutarlos todos (lo que está haciendo en este momento)

para /f "delims=|" %%i in (file1.txt) do @start "x" %%i


Esto no está muy claro, ¿desea un método interactivo para elegir qué línea del archivo por lotes se ejecutará?
Phuzion

@phuzion Mis disculpas, sí, tiene que ser interactivo
Peter Manton

¿Puedes explicar por qué quieres hacer esto? El caso de uso va a afectar cómo resolver este problema. Mi principal problema con esto es que parece que está solicitando un archivo por lotes que analizará un archivo y le proporcionará al usuario programas para ejecutar. Un archivo por lotes es probablemente la peor herramienta para esta tarea. ¿Estás en un entorno restringido que te obliga a usar esta tecnología?
Doltknuckle

Hola, sí, estoy en un entorno restringido, ya que te puedes imaginar que no es lo más fácil de usar con lotes, es bastante frustrante. Pero me fui y usé otra forma de hacerlo ahora, por lo que esta pregunta puede cerrarse si es necesario.
Peter Manton

Respuestas:


1

No estoy seguro de lo que quiere (o cuál es el problema), pero se lee como si necesitara usar el /winterruptor del startcomando:

for /f "delims=|" %%i in (file1.txt) do @start /w "x" %%i

Hola, quiero decir, si especifico la línea número 2 del archivo de texto (wordpad), se iniciará wordpad. (Nada más)
Peter Manton

1

Aquí hay un archivo por lotes que le permitirá elegir entre las dos opciones:

echo off
title Notepad or Wordpad
setlocal
set OK=N

:again
set /p choice=Please enter:    1 [Notepad],    2 [Wordpad]
if [%choice%]==[] goto again
if [%choice%]==[1] goto 1
if [%choice%]==[1] goto 2
set /p xxx=wrong entry, press any key to return.
endlocal
goto end


1: start notepad

2: start wordpad

:end
@echo on
cls

Hola, lo siento, pero el problema es que estoy llamando a las líneas desde un archivo de texto y son variables
Peter Manton

Ahh ya veo. Lo siento,
leí

1

Simplemente copie el archivo .txt a new_batch_file.bat y luego use el siguiente comando para llamarlo:

  • LLAME a new_batch_file.bat

0

¿Qué tal esto?

dir.menu

# Comments and empty lines are ignored

# Lines starting with a hyphen '-' indicate a group
- Editors
1 Notepad.exe
2 WordPad.exe

# You can use numbers or letters, and even words (without spaces)
- Graphics
P mspaint.exe

menu.bat

@setlocal
@echo off

if not exist ".\dir.menu" echo There is no "dir.menu" file in the current directory. & goto :end

set arg=%~1

if not defined arg goto :show_menu

for /f "tokens=1,* delims= " %%i in (dir.menu) do (
    if not "%%i"=="#" if /i "%arg%"=="%%i" (
        start "x" "%%j"
    )
)

:end
    endlocal
    exit /B

:show_menu
    echo   Menu:
    echo ===================
    for /f "tokens=1,* delims= " %%i in (dir.menu) do (
        if not "%%i"=="#" (
            if "%%i"=="-" (
                echo   %%j
            ) else (
                echo    %%i] %%j
            )
        )
    )
    goto :end

Este es un sistema de menú simple pero agradable. Puede usar números o letras (o una palabra, sin espacios) como clave. Lo he mantenido muy simple para que pueda ver cómo interactuar con él. (Por ejemplo, podría crear un conjunto de directorios como un sistema de menú completo, donde los elementos del menú están todos dentro de los archivos 'dir.menu').

Uso de la muestra:

>menu
  Menu:             
=================== 
  Editors           
   1] Notepad.exe   
   2] WordPad.exe   
  Graphics          
   P] mspaint.exe   

>menu p
[mspaint is launched]
>

ACTUALIZADO : probé y corregí un par de cosas desde mi computadora, en lugar de mi teléfono.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.