Como eu crio um arquivo txt para cada palavra de uma lista?

5

Exemplo:

Eu tenho um arquivo .txt ... (C: \ Gardening \ WordFile.txt) ... com as seguintes palavras ...

Aquaculture
Aquaponics
Hydroponics
Aeroponics

Eu preciso de um arquivo .TXT criado em um diretório especificado ... (IE: C: \ Gardening) como este

C:\Gardening\Aquaculture.txt

C:\Gardening\Aquaponics.txt

C:\Gardening\Hydroponics.txt

C:\Gardening\Aeroponics.txt

para CADA palavra no arquivo (C: \ Jardinagem \ WordFile.txt)

Já tenho um arquivo em lotes que cria uma pasta para cada arquivo em um diretório e move o arquivo para o diretório namesake.

Eu realmente preciso de ambas as funções em arquivos de lote separados, pois eu preciso de cada função para trabalhar separadamente em momentos diferentes.

    
por user3626994 15.07.2016 / 01:20

2 respostas

4

How do I create a txt file for each word in a list

Tente isso como uma solução se cada palavra em C: \ Gardening \ WordFile.txt estiver em sua própria linha separada no arquivo:

Text In WordFile.txt Example:

Aquaculture 
Aquaponics 
Hydroponics 
Aeroponics

Script em lote implícito

Esse script em lote deve ser executado no mesmo diretório que o List.txt e os arquivos a serem criados residirão; assim, o script em lote , a lista de arquivos e os arquivos criados estarão todos na mesma pasta por isso.

@ECHO ON

::: Implicitly Written
SET FileList=List.txt

FOR /F "TOKENS=*" %%F IN (%FileList%) DO (

    ECHO ^0>"%%~F.txt"

)
GOTO EOF

Script em lote explícito

Esse script em lote pode ser executado em qualquer lugar desde que o caminho completo é especificado apontando para a lista de arquivos e onde os novos arquivos são criados.

@ECHO ON

:::Explicitly Written
:::: Ensure there are NO SPACES in this path
SET FileList==H:\OMGA\AutoRefresh\FileList.txt
SET CreateFileDir=H:\OMGA\AutoRefresh\OutputFiles\

FOR /F "TOKENS=*" %%F IN (%FileList%) DO (

    ECHO ^0>"%CreateFileDir%\%%~F.txt"

)
GOTO EOF

Se cada palavra em C: \ Gardening \ WordFile.txt estiver na mesma linha exata com cada uma sendo separada por um espaço, use a solução abaixo:

Text In WordFile.txt Example:

Aquaculture Aquaponics Hydroponics Aeroponics

FOR /F "DELIMS=" %%F IN (C:\Gardening\WordFile.txt) DO FOR %%G IN (%%F) DO ECHO. >> "C:\Gardening\%%~F.txt"

Adicionado por solicitação comentada. . .

@ECHO ON

::: Implicit
:::: Ensure there are NO SPACES in this path
SET FileList=List.txt

FOR /F "TOKENS=*" %%F IN (%FileList%) DO (

    ECHO.  >>"%%~F.txt"
    CALL :CreateFile "%%~F.txt"
)
GOTO EOF

:CreateFile
ECHO ^0>"%~1"
GOTO EOF
    
por 15.07.2016 / 01:27
2

Se o powershell é uma opção:

Supondo que cada palavra esteja em uma linha separada.

Get-Content "C:\Gardening\WordFile.txt" | Foreach-Object {New-Item "C:\Gardening\$_.txt" -Type file}

Eu acho que é auto-explicativo.

  • lendo o conteúdo do arquivo linha por linha

  • crie para cada linha do dito arquivo um novo arquivo de texto com o nome da linha atual ($ _)

Se suas palavras são separadas por delimitadores como , você precisa substituir a parte _Get-Content_ do comando acima (a parte antes do símbolo pipe |) com o seguinte: %código%.

Isso funciona como acima, exceto que em vez de ler linha por linha, além disso, ele divide cada entrada pelo delimitador especificado.

Você pode substituir o caractere no método Split () pelo seu delimitador específico.

    
por 15.07.2016 / 14:13