Я хотел бы создать файлы .bat, которые запрашивают расширение файла и путь, затем сканирует каталог и подпапки, в которых находится сам файл .bat, просматривая все файлы с предоставленным расширением, и перемещает их вуказанный путь при создании .lnk в исходном местоположении.
Например, .bat будет вести себя так:
Введите расширение файла: mkv
Введите новый путь: e:\movies
Затем он сканирует папку и подпапки, в которых находится файл .bat, и перемещает все файлы .mkv по новому пути, одновременно создавая .lnk в исходной папке для каждого файла, который был перемещен..
Я хочу скопировать также исходную структуру источника в новую.Например, если у меня есть файл .mkv
в d:\star trek\movie1\a.mkv
, я бы хотел получить e:\movies\star trek\movie1\a.mkv
, а затем d:\star trek\movie1\a.lnk
..lnk
должен ссылаться на перемещенный файл в папке на диске e:
.
Любые идеи будут высоко оценены.
В качестве первого шага я хотел бы создатьпростой пакет, который запрашивает у пользователя расширение, а затем просто перечисляет все файлы с этим расширением.
Я написал:
@echo off
set /p type= File type?
dir *.type > list.txt
Но это не работает.Любые предложения?
Я нашел здесь некоторый код Как скопировать структуру каталогов, но включить только определенные файлы (используя пакетные файлы Windows) , и я только изучаю это.Я записал эту простую адаптацию, но я не понимаю, почему последнее эхо не выводит то, что я намереваюсь, например, полный путь назначения и имя файла.Я должен делать что-то глупое, я знаю!
@echo off
cls
setlocal enabledelayedexpansion
set SOURCE_DIR=K:\source
set DEST_DIR=K:\dest
set FILENAMES_TO_COPY=*.txt
for /R "%SOURCE_DIR%" %%F IN (%FILENAMES_TO_COPY%) do (
if exist "%%F" (
echo source: %%F
set FILE_DIR=%%~dpF
set FILE_INTERMEDIATE_DIR=!FILE_DIR:%SOURCE_DIR%=!
set FILE_NAME_EXT=%%~nxF
set FILE_DIR
set FILE_INTERMEDIATE_DIR
set FILE_NAME_EXT
xcopy /S /I /Y /V "%%F" "%DEST_DIR%!FILE_INTERMEDIATE_DIR!"
echo destination "%DEST_DIR%!FILE_INTERMEDIATE_DIR%FILE_NAME_EXT!"
pause
)
)