Показать полную графическую версию : Копирование из списка
krambrige
15-12-2018, 04:29
Привет, подскажите пожалуйста батник для копирования файлов из списка.
Есть список C:\test\list.txt, в этом списке название файлов, каждое название с новой строки.
В папке C:\test лежит куча файлов с названиями из list.txt, эти файлы имеют расширение txt.
Нужно скопировать определенные(которые есть в list.txt) файлы из C:\test в папку C:\123.
На форуме есть похожие темы, но ни одна не сработала (там условия другие).
Есть список C:\test\list.txt, в этом списке название файлов, каждое название с новой строки. »
Только имена? Или полные пути?
Для случая полных путей:
for /f "usebackq delims=" %%i in ("C:\test\list.txt") do copy "%%~i" "C:\123\*.*"
Для только имён:
for /f "usebackq delims=" %%i in ("C:\test\list.txt") do copy "C:\test\%%~i" "C:\123\*.*"
krambrige
15-12-2018, 05:47
Мне без разницы в принципе, попробовал оба способа, пишет "Не удается найти указанный файл".
https://s8.hostingkartinok.com/uploads/images/2018/12/ca7100b5c26a67b5eb46131b6590d280.png
Я так понимаю это кодировка не правильная, нагуглил разные способы: через notepad в OEM-866, ansi, chcp 1251 и тому подобные, что-то не сработало у меня.
krambrige, файл C:\test\list.txt должен быть сохранён в кодировке OEM/866.
krambrige
15-12-2018, 06:59
Поменял, все равно такая же ситуация.
krambrige, наберите в консоли chcp - что выдаёт?
krambrige
15-12-2018, 12:12
Выдает
Текущая кодовая страница: 866
Я решил вопрос не много по другому, через 7zip, сперва тоже ошибку выдало про неверную кодировку, потом заработало
Нужно поменять кодировку на utf-8 в list.txt
@echo off
set now=%TIME:~0,-3%
set now=%now::=.%
set now=%now: =0%
set now=%DATE:~-4%.%DATE:~3,2%.%DATE:~0,2%_%now%
7z.exe a -tzip -ssw -mx7 -r0 -x!*.mdx C:\test\%now%.zip @list.txt
megaloman
15-12-2018, 12:13
Подозреваю, список файлов в текстовом файле с кодировкой 1251@Echo Off
Chcp 1251 >nul
Set "Spisok=C:\test\list.txt"
Set "Ext=txt"
Set "BoxIn=C:\test"
Set "BoxOut=C:\123"
For /f "usebackq delims=" %%i in ("%Spisok%") Do Copy "%BoxIn%\%%~ni.%Ext%" "%BoxOut%\" >nul
Неважно, как указаны имена файлов (с путями или без), по условию:В папке C:\test лежит куча файлов с названиями из list.txt, эти файлы имеют расширение txt. »
krambrige
15-12-2018, 12:18
Я точно не скажу, много информации по поводу кодировок пересмотрел, все в голове перемешалось.
Но в батнике пользователя Iska я менял кодировку на 1251, utf 8, OEM 866 и все равно не выполнялся батник.
megaloman
15-12-2018, 12:29
krambrige, Но в батнике пользователя Iska я менял кодировку на 1251, utf 8, OEM 866 и все равно не выполнялся батник »Надо было не кодировку батника менять, а кодировку списка файлов.
Мой батник, если в путях, указанных в батнике, имеются русские символы, надо сохранить в 1251 кодировке. Он обрабатывает список файлов в 1251 кодировке. (проверьте, notepad.exe C:\test\list.txt правильно отображает имена файлов?)
krambrige
15-12-2018, 12:51
Я менял везде (так как сперва не знал в каком файле менять, решил методом тыка), ansi верно ведь? потому что в notepade есть 1251, но она сбрасывается. С помощью Sublime сохранил в 1251, все равно кракозябры.
В общем сейчас я все заново проделал с 7zip, нашел что я там поменял и почему у меня заработало, просто на utf-8 поменял файл с названиями, без использования 7zip не срабатывает у меня.
krambrige
15-12-2018, 13:15
Еще один вопрос возник, не уверен что можно создавать много тем, спрошу тут, не подскажите как добавить название файла в самое начало этого файла?
Файлов много, расширение txt, находятся они в папке C:\file
megaloman
15-12-2018, 13:46
krambrige, прикрепите Ваш текстовый list.txt к сообщению, дайте разобраться с реальностью.как добавить название файла в самое начало этого файла?
Файлов много, расширение txt, находятся они в папке C:\file »
О каких файлах речь? Что Вы в конце концов хотите получить?
Я менял везде, ansi верно ведь? потому что в notepade есть 1251 »
ANSI - это целый набор 8-битных национальных кодировок придуманных для старых версий Window
в ПО под этим подразумевается кодировка настроенная в системе для совместимости с не поддерживающими юникод программами
прикрепите Ваш текстовый list.txt к сообщению »
Думаю что лучше, если в архиве. Бережёного бог бережёт: тогда заведомо будет лежать в исходном виде.
Но в батнике пользователя Iska я менял кодировку на 1251, utf 8, OEM 866 и все равно не выполнялся батник. »
Кодировка пакетного файла должна быть в OEM/866 (для нашего случая, где в пакетном файле присутствует только латиница, это не суть важно). Кодировка файла также должна быть в OEM/866 (и это критично, поскольку там у Вас не только латиница)
krambrige, прикрепите Ваш текстовый list.txt к сообщению, »
Думаю что лучше, если в архиве. Бережёного бог бережёт: тогда заведомо будет лежать в исходном виде. »
Именно так. krambrige, упакуйте Ваш файл list.txt в архив, каковой прикрепите к сообщению, либо выложите на dropmefiles, а ссылку — сюда.
Кодировка файла также должна быть в OEM/866 (и это критично, поскольку там у Вас не только латиница) »
это как раз вопрос очень дискуссионный - на диске имена файлов в юникоде. Сейчас даже если просто средствами проводника сделать копию файла, в её имени длинное тире, которое отсутствует в cp 866
krambrige
15-12-2018, 15:33
Вот https://drive.google.com/open?id=1DMrtW0hKfcDZmCSnlV-NH6WfNcvm2Zo0
Busla, тут без дискуссий: если в именах файлов наличествует юникод — добро пожаловать в PowerShell. Можно, конечно, поизвращаться с обходными вариантами, но PowerShell — проще. Конкретно в файле автора — в одном имени файла («Ни Суарес ни Кавани — только Стуани Кто меняет историю Жироны.txt») тире есть, и именно длинное — Em Dash.
Ежели же подискутировать, то и Проводник тут не показатель: файловая система вполне позволяет такие имена, на которых тот же Проводник тупо откажется работать.
Сейчас даже если просто средствами проводника сделать копию файла, в её имени длинное тире, которое отсутствует в cp 866 »
В каких-то новых ОС? У меня под Windows 7 x64 — обычный дефис, 0x2D.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.