1 votos

cómo separar el único archivo de texto en varias archivo de texto mediante el uso de líneas de lote?

Tengo instalado el programa siguiente,

@echo off
cls
set /p "filename=type file name>"
setlocal enabledelayedexpansion
for /r E:\ %%a in (*) do if "%%~nxa"=="%filename%" (
echo %%~dpnxa >>path.txt
)

Tengo un archivo de salida path.txt que contiene,

E:\new.txt 
E:\Redmi\new folder\new.txt
E:\windows\new folder\new folder\new.txt

Me gusta tener esos en archivos separados como,

E:\new.txt en path1.txt

E:\Redmi\new folder\new.txt en path2.txt

E:\windows\new folder\new folder\new.txt en path3.txt

1voto

DavidPostill Puntos 30286

¿Cómo puedo separar único archivo de texto en varias archivo de texto de líneas?

Edificio en el comentario de Seth, puede utilizar el siguiente archivo por lotes:

@echo off
cls
setlocal enabledelayedexpansion
set /p "filename=type file name>"
rem initialise counter to 1
set _count=1
for /r E:\ %%a in (*) do if "%%~nxa"=="%filename%" (
  echo %%~dpnxa >>path!_count!.txt
  rem increment the counter
  set /a _count+=1
  )
endlocal

Notas:

  • Me ha movido el setlocal línea con el fin de detener la variable filename fugas en la vocación cmd shell.

Leer Más

1voto

dbenham Puntos 4666

Tengo una mucho más simple, y probablemente la más rápida solución para usted:

  • Uso DIR /S /B /A-D en lugar de FOR /R para obtener la ruta de acceso de la lista. Esto elimina la necesidad de un IF declaración.
  • La tubería a FINDSTR /N, coincidente con el comienzo de una línea, para obtener el número de línea para uso en el nombre del archivo de salida.
  • Ejecutar la totalidad de la cosa dentro de FOR /F a recorrer y analizar los resultados en el número de línea y la ruta de cada línea.
@echo off
setlocal
set /p "filename=type file name>"
for /f "delims=: tokens=1*" %%A in (
  'dir /s /b /a-d "E:\%filename%" ^| findstr /n "^"'
) do >"path%%A.txt" echo %%B

Si se tratara de mi script, me gustaría pasar el nombre de archivo de destino como un argumento en lugar de preguntar por él:

@echo off
for /f "delims=: tokens=1*" %%A in (
  'dir /s /b /a-d "E:\%~1" ^| findstr /n "^"'
) do >"path%%A.txt" echo %%B

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: