Я никогда не пробовал это, и я искал лучший способ сделать скрипт, который может извлекать содержимое из txt-файла в свои собственные txt-файлы
Теперь мне это удалось, и он извлекает весь контент в свои собственные файлы txt, но не уверен, как заставить его использовать извлеченный контент в качестве имени файла txt
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('type "a.txt"') do (
cd > %%a.txt
)
endlocal
так что у меня есть это
Содержание моего файла .txt:
All_type_2020
All_Foods_2021
и это то, что я получаю
All_type_2020All_Foods_2021.txt
Я протестировал много разных скриптов, и закрытие, которое я получил, было с помощью скрипта выше
моя цель - добиться таких результатов
All_type_2020.txt
All_Foods_2021.txt
@thecarpy - да, я сделал это, чтобы показать, что внутри | --
the a.txt
- я не был уверен, как раскрыть то, что находится внутри txt-файла, так что да, внутри моего txt-файла у меня есть 100 разных сообщений, таких как то, что вы видите выше, и я хочу извлечь каждую строку в файл txt, но с собственным именем файла
Я обновил свой вопрос немного лучше
Сценарий, который вы отправили в качестве ответа, неверен, как и ответ, опубликованный thecarpy. delims
не требуется и в данном случае не предпочтительнее tokens
. Это то, что вы пытались сделать.@For /F UseBackQ^ Tokens^=*^ EOL^= %%G In ("a.txt") Do @(Echo %%~G) 1>"%%~G.txt"
@Compo - Спасибо - половина того, что я искал - мне не нужно было копировать имя файла в качестве содержимого - только в имя файла - я мог бы использовать это для других задач - исправленный скрипт делает именно то, что я искал - цель состояла в том, чтобы поместить содержимое файла a.txt
в качестве имени файла
Ладно, тогда еще проще, @For /F UseBackQ^ Tokens^=*^ EOL^= %%G In ("a.txt") Do @CD.>"%%~G.txt"
. Обратите внимание на пропущенный пробел между .
и >
; таким образом он должен создавать пустые (0 байт) файлы.
Я не совсем уверен в том, что вы ищете, но у меня может быть кое-что, что, тем не менее, может вам помочь.
Код, который я написал ниже, будет проверять каждое предложение в «a.txt», если первое слово равно «синему», если это так, он выведет его в файл txt.
for /f "delims = " %%a in (a.txt) do if "%%a" == "blue" (
echo - %%a is blue >blue.txt
) else (
if "%%a" == "red" echo - %%a is red >red.txt)
pause
Это упрощенная версия того, что, я думаю, вы пытаетесь сделать, но, надеюсь, это может помочь. Чтобы изменить то, как фильтры документов выглядят на веб-сайте, и вы обязательно найдете способы помочь.
Спасибо, это не то, что я ищу, НО это помогло - delims
был код, которого мне не хватало - я проверил его, но забыл использовать это *
Итак, содержание a.txt
All_type_2020
All_Foods_2021
All_type_2021
All_Foods_2022
All_type_2022
Содержимое моего файла CMD:
@echo off
for /f "delims=*" %%a in (a.txt) do (
echo. >%%a.txt
)
В каталоге у меня есть эти пустые файлы:
11/10/2022 10:22 AM <DIR> .
11/10/2022 10:22 AM <DIR> ..
11/10/2022 10:22 AM 77 a.txt
11/10/2022 10:22 AM 3 All_Foods_2021.txt
11/10/2022 10:22 AM 3 All_Foods_2022.txt
11/10/2022 10:22 AM 3 All_type_2020.txt
11/10/2022 10:22 AM 3 All_type_2021.txt
11/10/2022 10:22 AM 3 All_type_2022.txt
6 File(s) 92 bytes
Спасибо - очень хорошо, я нашел проблему - я использовал неправильный код delims
был правильный код - я проверил его, но забыл использовать этот *
пустые файлы могут быть из-за этого .
после echo
Я никогда не понимал, что вы хотели в файлах, поэтому я специально упомянул пустые файлы.
то, что у вас было, было в точку, почти на 100% именно то, что я хотел - у меня есть отдельные слова в строке в файле txt
, как в вашем примере, и извлекать каждую строку в свою собственную filename.txt
, но 3 не правильно - так что если вы хотите чтобы точно увидеть, что я делаю, скопируйте мой скрипт и сделайте a.txt
и скопируйте свой пример отсюда So, contents of a.txt
и вставьте его в txt файл и запустите скрипт, он будет работать точно так же, как ваши результаты, но минус 3 и минус пустое место
Я обновил свой ответ, используя ваш пример
Благодаря thecarpy
и Pedro
я смог понять свою ошибку
Вот правильный сценарий
@echo off
setlocal enabledelayedexpansion
for /f "delims=*" %%a in ('type "a.txt"') do (
cd. > %%a.txt
)
endlocal
Это содержимое a.txt
CONTENTS
All_type_2020
All_Foods_2021
All_type_2021
All_Foods_2022
All_type_2022
The Results
All_type_2020.txt
All_Foods_2021.txt
All_type_2021.txt
All_Foods_2022.txt
All_type_2022.txt
Оба они сделают работу
@For /F UseBackQ^ Tokens^=*^ EOL^= %%G In ("a.txt") Do @CD.>"%%~G.txt"
Я не понимаю, что вы хотите, вы хотите текстовые файлы с именами типа
All_type_2020.txt
иAll_Foods_2021.txt
, хорошо, с каким содержимым? Что для вас значит| -- All_type_2020
? это точное содержаниеa.txt
?