Jak utworzyć plik txt dla każdego słowa na liście

5

Przykład:

Mam plik .txt ... (C: Ogrodnictwo WordFile.txt) ... z następującymi słowami ...

Aquaculture
Aquaponics
Hydroponics
Aeroponics

Potrzebuję pliku .TXT utworzonego w określonym katalogu ... (IE: C: Gardening) w ten sposób

C:\Gardening\Aquaculture.txt

C:\Gardening\Aquaponics.txt

C:\Gardening\Hydroponics.txt

C:\Gardening\Aeroponics.txt

dla KAŻDEGO słowa w pliku (C: Ogrodnictwo WordFile.txt)

Mam już plik wsadowy, który tworzy folder dla każdego pliku w katalogu i przenosi go do katalogu nazwanego.

Naprawdę potrzebuję funkcji OBU w oddzielnych plikach wsadowych, ponieważ każda funkcja wymaga osobnej pracy w różnych momentach.

użytkownik3626994
źródło

Odpowiedzi:

4

Jak utworzyć plik txt dla każdego słowa na liście

Wypróbuj to rozwiązanie, jeśli każde słowo w C: Ogrodnictwo WordFile.txt znajduje się w osobnej linii w pliku:

Tekst w WordFile.txt Przykład:

Aquaculture 
Aquaponics 
Hydroponics 
Aeroponics

Niejawny skrypt wsadowy

Ten skrypt wsadowy powinien być uruchamiany z tego samego katalogu, w którym znajduje się List.txt, a pliki do utworzenia będą rezydować; więc skrypt wsadowy , lista plików i utworzone pliki będą w tym samym folderze.

@ECHO ON

::: Implicitly Written
SET FileList=List.txt

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

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

)
GOTO EOF

Jawny skrypt wsadowy

Ten skrypt wsadowy można uruchomić z dowolnego miejsca, ponieważ określona jest pełna ścieżka wskazująca na listę plików i gdzie tworzone są nowe pliki.

@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

Jeśli każde słowo w C: Ogrodnictwo WordFile.txt znajduje się w tej samej dokładnej linii, a każda z nich jest oddzielona spacją, użyj zamiast tego poniższego rozwiązania:

Tekst w WordFile.txt Przykład:

Aquaculture Aquaponics Hydroponics Aeroponics

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

Dodano na prośbę o komentarz. . .

@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
Pimp Juice IT
źródło
Komentarze nie są przeznaczone do szerszej dyskusji; ta rozmowa została przeniesiona na czat .
Journeyman Geek
To zrobiło. To teraz działa!
user3626994
@ user3626994 Zobacz Akceptowanie odpowiedzi, aby upewnić się, że rozumiesz, jak to działa w przypadku odpowiedzi, które pomogą Ci rozwiązać problem w zadanym pytaniu. Kiedy masz szansę, sprawdź to i rozważ zaakceptowanie mojej odpowiedzi, aby zamknąć pętlę na pytanie dotyczące twojego pytania.
Pimp Juice IT
2

Jeśli PowerShell jest opcją:

Zakładając, że każde słowo jest w osobnej linii.

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

Myślę, że to oczywiste.

  • odczyt zawartości pliku linia po linii

  • utwórz dla każdej linii tego pliku nowy plik tekstowy z nazwą bieżącej linii ($ _)

Jeśli twoje słowa są oddzielone separatorami jak , trzeba wymienić _GET-Content _ część powyższego polecenia (część przed symbolem rury |) z następujących powodów: (Get-Content "C:\Gardening\WordFile.txt").split(",").

Działa to tak, jak powyżej, z tym wyjątkiem, że zamiast czytać wiersz po wierszu, dodatkowo dzieli każdy wpis na określony ogranicznik.

Możesz zastąpić znak w metodzie Split () określonym ogranicznikiem.

humble.adm1n
źródło