5

Пример:

У меня есть файл .txt ... (C:\Gardening\WordFile.txt)... со следующими словами ...

Aquaculture
Aquaponics
Hydroponics
Aeroponics

Мне нужно .Файл TXT создан в указанном каталоге ... (IE: C:\Gardening), как это

C:\Gardening\Aquaculture.txt

C:\Gardening\Aquaponics.txt

C:\Gardening\Hydroponics.txt

C:\Gardening\Aeroponics.txt

для КАЖДОГО слова в файле (C:\Gardening\WordFile.txt)

У меня уже есть пакетный файл, который создает папку для каждого файла в каталоге и перемещает файл в его одноименный каталог.

Мне действительно нужны ОБА функции в отдельных пакетных файлах, так как мне нужно, чтобы каждая функция работала отдельно в разное время.

2 ответа2

4

Как мне создать текстовый файл для каждого слова в списке

Попробуйте это как решение, если каждое слово в C:\Gardening\WordFile.txt находится на отдельной строке в файле:

Пример текста в WordFile.txt:

Aquaculture 
Aquaponics 
Hydroponics 
Aeroponics

Неявный пакетный скрипт

Этот пакетный скрипт должен быть запущен из той же директории, что и List.txt, и файлы, которые будут созданы, будут находиться; поэтому пакетный скрипт, файл-лист, и созданные файлы будут все в той же одной папке для этого.

@ECHO ON

::: Implicitly Written
SET FileList=List.txt

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

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

)
GOTO EOF

Явный пакетный скрипт

Этот пакетный скрипт можно запустить из любого места, поскольку указан полный путь, указывающий на список файлов и место, где создаются новые файлы.

@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

Если каждое слово в C:\Gardening\WordFile.txt находится на одной и той же строке, каждое из которых разделено пробелом, используйте вместо этого приведенное ниже решение:

Пример текста в WordFile.txt:

Aquaculture Aquaponics Hydroponics Aeroponics

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

Добавлено за комментированный запрос. , ,

@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
2

Если powershell это вариант:

Предполагая, что каждое слово находится на отдельной строке.

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

Я думаю, что это само за себя.

  • чтение содержимого файла построчно

  • создать для каждой строки указанного файла новый текстовый файл с именем текущей строки ($ _)

Если ваши слова разделены разделителями, например , вам необходимо заменить часть _Get-Content _ вышеприведенной команды (часть перед символом канала |) на следующую:(Get-Content "C:\Gardening\WordFile.txt").split(",") .

Это работает, как указано выше, за исключением того, что вместо чтения строка за строкой, кроме того, он разделяет каждую запись по указанному разделителю.

Вы можете заменить символ в методе Split() указанным вами разделителем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .