Nano Hash - криптовалюты, майнинг, программирование

Переместите определенные файлы из подпапок и удалите указанные подпапки

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


Чтобы представить ситуацию в перспективе, дерево каталогов выглядит примерно так:

  • \Panasonic
    • \PRG00A
    • \PRG00B
    • ...
    • \PRG069

Panasonic находится в нескольких папках, поэтому я хотел бы поместить свой пакетный файл рядом с \Panasonic. И заставить его работать относительно своего местоположения.


Итак, в основном я хочу создать пакетный файл move.bat, который будет проходить по подкаталогам \Panasonic и перемещать любые видеофайлы (с расширением .MOD для упрощения), а затем удалять родительский каталог (например, \PRG00B).

В результате каталог \Panasonic содержит только видеофайлы, а не подкаталоги с кучей мусора.


Что у меня есть на данный момент (имейте в виду, что это мой первый пакетный скрипт, и я даже не тестировал его полностью). Выбор продолжить не работает, кстати. Хотя не знаю почему.

@echo off
cls
set dirName=%~dp0Panasonic
goto question

:start
goto move
goto end

:move
for /D %%G in ("%cd%") do (
    for %%I in ("%%G") do (
        if %%I equ "*.MOD" (
            move /Y %%I %dirName%
        )
    )
    rmdir /s /q %%G
)

:end
echo Done.
pause
endlocal
exit

:question
set /P c="Are you sure you want to proceed with moving video files from %dirName%? [Y/N]"
if /I %c% equ 'y' (
    echo Moving files...
    goto start
) else (
    goto end
)

Еще раз, я впервые создаю пакетный файл, поэтому любая помощь очень ценится!

25.07.2015

  • Ваш выбор не работает, потому что вы сравниваете свой ввод (вероятно, простой y (один символ) со строкой 'y' (три символа). Лучше используйте if /i "%c%" equ "y" ( (или используйте соответствующую команду; посмотрите на choice /?). Остальное уже хорошо объяснил PA. 25.07.2015
  • Я даже не заметил одинарные кавычки, спасибо, что указали на это. 25.07.2015

Ответы:


1

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

Всего в три простых шага

Шаг 1. Чтобы перебрать все каталоги, которые у вас уже были, ваш друг for /d

for /d %%a in (*) do echo %%a

Шаг 2. Чтобы переместить все .mod файлы в каждом из найденных каталогов в его родительский каталог или один каталог выше в иерархии, который является текущим каталогом, вам просто нужно

move %%a\*.mod .

не используйте параметр /y, чтобы он не перезаписывал существующие файлы, уже перемещенные в родительский каталог (у вас будет возможность проверить результаты позже. Продолжайте читать)

Шаг 3. И, наконец, удалите каталог,

rd %%a

но не используйте /s, так что он будет работать только в том случае, если каталог пуст, то есть если вы успешно переместили все содержащиеся в нем файлы. Таким образом, вы можете просматривать их, чтобы увидеть, что осталось, без потери данных.

Итак, ваш moveupallmod.bat становится просто

@echo off
for /d %%a in (*) do (
   move "%%a\*.mod" .
   rd "%%a" 
)

и это все!

25.07.2015
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..