Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 07.08.2021
Сообщений: 10

Вывод в список несколько типов файлов по расширению

01.04.2025, 00:06. Показов 1779. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, пытаюсь переделать батник под свои нужды.
Помогите его подправить, чтобы он мог выводить в список несколько типов файлов по расширению (нужно *.wim и *.esd) и выбирать из списка можно было один файл, введя его порядковый номер, или все файлы введя звездочку(*).
Скрипт должен искать файлы *.wim и *.esd в заданной папке, выводить их список. Далее выбор одного или всех найденных файлов для последующего копирования в папку Backup.

Суть скрипта, найти файлы в папке для создания их бэкапа. Пробую уже второй день и ничего... Не силен я в батниках.

Пробую так, но не выводит ничего...
Кликните здесь для просмотра всего текста
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Echo Off &Cls &SetLocal
    Set "destination=%SYSTEMDRIVE%\Work\Backup"
 
    Pushd "%~dp0"
    Set "source=%SYSTEMDRIVE%\Work\Image\sources"
    Set "src=%source%\*.wim %source%\*.esd"
 
    Set /A i=0
    For %%f In ("%src%") Do (
        Set /A i+=1
        Call Echo %%i%% = "%%~nxf"
        Call Set "@@%%i%%=%%f"
    )
    Echo. &Set /P N=Enter file number 1^<=N^<=%i% ^>
    Call Set "File=%%@@%N%%%"
    If Defined File (
        Echo Copy "%File%" "%destination%\
        Copy "%File%" "%destination%"
    ) Else (
        Echo !!! The entered number value "%N%" is incorrect 
    )
    Popd &EndLocal
Pause
Exit /B 0
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2025, 00:06
Ответы с готовыми решениями:

Переименовать все файлы с расширением, указанным в параметре 1, в файлы с расширением, указанным в параметре 2
Необходимо создать командный файл, который будет переименовывать все файлы с расширением, указанным в параметре 1 в файлы с расширением,...

Как в файле с расширением .bat (командной строки) удалить файлы из папки с расширением .png и .jpg все кроме одно
Например в определенной папке есть файлы 1.png 2.png 3.png 4.png 5.png 6.jpg 7.jpg file.bat Какие команды нужно прописать в file.bat чтобы...

Вывод списка временных файлов с заданным расширением в папке + возможность удаления временных файлов по имени
нужна создать bat ) я вообще бум-бум Создайте командный файл, выполняющий вывод списка временных файлов с за- данным расширением...

12
6985 / 2875 / 1106
Регистрация: 06.06.2017
Сообщений: 9,765
01.04.2025, 19:24
Цитата Сообщение от Alex_Zorg Посмотреть сообщение
найти файлы в папке для создания их бэкапа.
См. 8).
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
02.04.2025, 12:58
Alex_Zorg, добрый! Пробуйте:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo off
set "source=C:\test"
set "destination=C:\backup"
powershell -executionpolicy bypass -command "$count=1;" ^
    "$files=Get-ChildItem '%source%' -file | where {($_.extension -eq '.wim') -or ($_.extension -eq '.esd')} | Select-Object @{n='Number'; e={$script:count; $script:count++}}, @{n='Name'; e={$_.name}};" ^
    "$files | ft;" ^
    "$number=Read-Host 'Введите порядковый номер файла';" ^
    "if ($number -eq '*') {" ^
        "$files | foreach {Copy-Item -Path ('%source%\' + $_.Name) -destination '%destination%' -force}" ^
    "} else {" ^
        "$files | where {$_.number -eq $number} | foreach {Copy-Item -Path ('%source%\' + $_.Name) -destination '%destination%' -force}" ^
    "}"
pause
exit
Примечание

1) Скрипт необходимо сохранить в кодировке OEM-866
2) Во 2-ой строчке C:\test необходимо поменять на путь к каталогу с файлами, которые нужно скопировать
3) В 3-ей строчке C:\backup необходимо поменять на путь к каталогу, в который нужно скопировать файлы из п. 2
1
0 / 0 / 0
Регистрация: 07.08.2021
Сообщений: 10
02.04.2025, 13:59  [ТС]
Karen87, спасибо большое за ответ и помощь.
При запуске скрипта получаю красное окно cmd (сплошные ошибки). Думаю что все это из-за того что я пользуюсь семеркой и в ней старая версия PowerShell. Хотелось бы конечно реализацию сего кода без PowerShell, но...
Попробую обновить PowerShell на новую версию...
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
02.04.2025, 14:46
Alex_Zorg, не спешите обновлять версию Powershell. Сейчас попробую адаптировать под имеющуюся у Вас. Единственное, покажите используемый Вами код с точностью до символа и скрин с ошибками
0
0 / 0 / 0
Регистрация: 07.08.2021
Сообщений: 10
02.04.2025, 14:56  [ТС]
Код который пробую:
Кликните здесь для просмотра всего текста

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
    Set "destination=%SYSTEMDRIVE%\Work\Backup"
    Set "source=%SYSTEMDRIVE%\Work\Image\sources"
 
powershell -executionpolicy bypass -command "$count=1;" ^
    "$files=Get-ChildItem '%source%' -file | where {($_.extension -eq '.wim') -or ($_.extension -eq '.esd')} | Select-Object @{n='Number'; e={$script:count; $script:count++}}, @{n='Name'; e={$_.name}};" ^
    "$files | ft;" ^
    "$number=Read-Host 'Введите порядковый номер файла';" ^
    "if ($number -eq '*') {" ^
        "$files | foreach {Copy-Item -Path ('%source%\' + $_.Name) -destination '%destination%' -force}" ^
    "} else {" ^
        "$files | where {$_.number -eq $number} | foreach {Copy-Item -Path ('%source%\' + $_.Name) -destination '%destination%' -force}" ^
    "}"
pause
exit
Миниатюры
Вывод в список несколько типов файлов по расширению  
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
02.04.2025, 14:58
Alex_Zorg, пробуйте этот вариант:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
    Set "destination=%SYSTEMDRIVE%\Work\Backup"
    Set "source=%SYSTEMDRIVE%\Work\Image\sources"
 
powershell -executionpolicy bypass -command "$count=1;" ^
    "$files=Get-ChildItem '%source%' | where {($_.extension -eq '.wim') -or ($_.extension -eq '.esd')} | Select-Object @{n='Number'; e={$script:count; $script:count++}}, @{n='Name'; e={$_.name}};" ^
    "$files | ft;" ^
    "$number=Read-Host 'Введите порядковый номер файла';" ^
    "if ($number -eq '*') {" ^
        "$files | foreach {Copy-Item -Path ('%source%\' + $_.Name) -destination '%destination%' -force}" ^
    "} else {" ^
        "$files | where {$_.number -eq $number} | foreach {Copy-Item -Path ('%source%\' + $_.Name) -destination '%destination%' -force}" ^
    "}"
pause
exit
0
0 / 0 / 0
Регистрация: 07.08.2021
Сообщений: 10
02.04.2025, 15:10  [ТС]
Да! Так сработало... Спасибо большое...
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
02.04.2025, 15:11
Alex_Zorg, не за что
0
 Аватар для Angry Old Man
3005 / 745 / 313
Регистрация: 26.03.2022
Сообщений: 1,394
Записей в блоге: 1
02.04.2025, 17:28
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
@Echo Off &Cls
    Set "BoxIn=Z:\Box_In"
    Set "BoxOut=Z:\Box_Out"
    Set "Mask=*.wim *.esd"
        
    Pushd "%BoxIn%"||(Echo Folder "%BoxIn%" not found &Pause &Exit /B 2)
    
    Set /A n=1000000
    Set /A m=0
    For /f "usebackq delims=" %%f IN (`2^>nul Dir /B %Mask%`) Do (
        Set /A n+=1, m+=1
        Call Echo %%m%%. %%f
        Call Set "@%%n%%=%%f"
    )
    If %m% EQU 0 (Echo Files "%Mask%" In "%BoxIn%" not found. Cancel. &Pause &Exit /B 2)
    :Begin
        Echo.
        Echo Введите номер файла для копирования
        Echo либо * для копирования всех  файлов
        Set /P i=либо N для завершения ^>
        If /I "%i%"=="N" Exit /B
        If "%i%"=="*" ((For /f "usebackq delims=" %%f IN (`2^>nul Dir /B %Mask%`) Do Echo %%f &>nul XCopy /D "%%f" "%BoxOut%\") &Pause &Exit /B)
        Echo %i%| >nul FindStr /R /C:"^[1-9][0-9]*$"||(Echo The entered number "%i%" is incorrect &GoTo :Begin)
        If %i% GTR %n% (Echo The entered number "%i%" is incorrect ^>%n% &GoTo :Begin)
        Set /A k=1000000+%i%
        Call Set "Str=%%@%k%%%"
        
        >nul XCopy /D "%Str%" "%BoxOut%\"&&Echo             "%Str%" "%BoxOut%\"
        Set "i="
        GoTo :Begin
Pause
Exit /B
0
0 / 0 / 0
Регистрация: 07.08.2021
Сообщений: 10
02.04.2025, 18:15  [ТС]
Angry Old Man , , то что надо...
Находит, копирует как и хотелось. Спасибо большое.
У меня почему-то криво отрабатывает строка:
Windows Batch file
1
Echo %i%| >nul FindStr /R /C:"^[1-9][0-9]*$"||(Echo Введенное число "%i%" неверно &GoTo :Begin)
При вводе числа больше, я получаю не:
Windows Batch file
1
(Echo Введенное число "%i%" неверно &GoTo :Begin)
а выводит сообщение: "Неправильно указан диск" и на повторный круг...

Тем ни менее ввод неверного числа не пропускает... Спасибо!!!
Миниатюры
Вывод в список несколько типов файлов по расширению  
0
 Аватар для Angry Old Man
3005 / 745 / 313
Регистрация: 26.03.2022
Сообщений: 1,394
Записей в блоге: 1
02.04.2025, 18:39
Alex_Zorg, Виновааат!!!! Замените 24 строку
Windows Batch file
1
        If %i% GTR %m% (Echo The entered number "%i%" is incorrect ^>%m% &GoTo :Begin)
0
0 / 0 / 0
Регистрация: 07.08.2021
Сообщений: 10
02.04.2025, 18:48  [ТС]
Angry Old Man, теперь отлично отрабатывает ...
Ещё раз спасибо большое за помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2025, 18:48
Помогаю со студенческими работами здесь

Проверка существования файлов с несколькими расширениями
Всем привет, искал искал, так и не нашел тему с обсуждением &quot;bat&quot; файлов, так что переместите тему, если что. Итак к делу. Пример:...

Указать несколько масок расширений файлов в одной команде
Ситуация такая: надо запускать 7zip для архивации всех файлов в определенной локации по маске Пробую делать: D:\7za.exe a -t7z...

Переименовать файлы с определенным расширением на нескольких жестких дисках
Всем привет! Помогите разобраться чет не получается( Суть такая: Нужен батник чтобы он находил все файлы с расширением .xml на нескольких...

Как записать несколько расширений файлов в командной строке?
xcopy /C /H /R /Y /I /K c:\Windows\pr*.exe *.com *.bat g:\ Нужно скопировать исполнительные файлы с папки Windows, которые начинаются...

Помогите разработать пакетный файл clear.bat, на вход которого передается список расширений файлов
Разработать пакетный файл clear.bat на вход которого передается список расширений файлов (например, clear.bat pas java cpp). Пакетный файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru