Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Назначить переменную названия папки имя которой неизвестно

Ответить
Настройки темы
CMD/BAT - Назначить переменную названия папки имя которой неизвестно

Аватара для minutka15

Пользователь


Сообщения: 141
Благодарности: 11

Профиль | Отправить PM | Цитировать


Есть код который создает папки от имен .exe файлов и перекидывает туда .exe и .bmp файлы которые лежат в той-же папке a .txt файлы не в конечный путь.

Код: Выделить весь код
@echo off

for %%f in (*.exe,*.bmp) do (
md "%%~nf\Имя папки""
move "%%f" "%%~nf\Имя папки"
)
for %%f in (*.txt do (
move "%%f" "%%~nf"
) 

Exit /B
Но я хотел бы кое что подправить тут, а именно имя папки которое я прописываю в скрипт.
Я хочу добавить это действие на правый клик мыши с командой "переместить файлы"
и для того что-бы имя папки не прописывать в скрипт я хочу создать папку с нужным мне названием в рабочей папке, а скрипт будет работать создавая имя этой папки.
Теперь исходя из того что имя папки будет носить то имя папки которую я создал, я использовал в скрипте строку таким образом

Код: Выделить весь код
@echo off

for /f %d in ('dir /B /A:D %CD%') do set "foldername=%~d"

for %%f in (*.exe,*.bmp) do (
md "%%~nf\%foldername%"
move "%%f" "%%~nf\%foldername%"
)
for %%f in (*.txt do (
move "%%f" "%%~nf"
) 

Exit /B
Однако безуспешно.

И вот вопрос, как назначить неизвестное имя папки в переменную, которая бы назначала эти имена создаваемых папок в скрипте ?

-------
We don't call 911


Отправлено: 15:34, 01-05-2024

 

Deadooshka


Сообщения: 2488
Благодарности: 673

Профиль | Отправить PM | Цитировать


А в какой ветке прописываете - * или directory? Вызов из реестра вроде бы не меняет текущую директорию. Какой-нибудь cd /d "%V" надо вручную прописать либо в реестре с командой типа "cmd.exe /c (cd /d "%V" && script.bat)", либо передать %V в качестве параметра скрипту, в котором это будет %1

Отправлено: 20:45, 01-05-2024 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для minutka15

Пользователь


Сообщения: 141
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата Sham:
А в какой ветке прописываете - * или directory? Вызов из реестра вроде бы не меняет текущую директорию. Какой-нибудь cd /d "%V" надо вручную прописать либо в реестре с командой типа "cmd.exe /c (cd /d "%V" && script.bat)", либо передать %V в качестве параметра скрипту, в котором это будет %1 »
Что-бы работало по правому клику в папке В реестр добавляю такую регу:

Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Поместить файлы в папки]
"Icon"="C:\\Users\\SomeUserName\\AppData\\Roaming\\MyProgram\\icons\\MyIcon.ico"

[HKEY_CLASSES_ROOT\*\shell\Поместить файлы в папки\command]
@="C:\\Users\\SomeUserName\\AppData\\Roaming\\MyProgram\\MoveFiles.exe \"%1\""
Разумеется конвертировав батник в .exe файл

На счет смены директории то все фичи которые я добавлял ранее, работают безотказно.

-------
We don't call 911


Отправлено: 21:04, 01-05-2024 | #3


Deadooshka


Сообщения: 2488
Благодарности: 673

Профиль | Отправить PM | Цитировать


передаёте контекстный файл %1 в параметры, а используете %CD% - как это понимать?

Отправлено: 21:24, 01-05-2024 | #4


Аватара для minutka15

Пользователь


Сообщения: 141
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата Sham:
передаёте контекстный файл %1 в параметры, а используете %CD% - как это понимать? »
Пока я никуда ничего не передаю, я вам показал как я прописывал в реестре свои исторические безделушки.

-------
We don't call 911


Отправлено: 22:31, 01-05-2024 | #5


Deadooshka


Сообщения: 2488
Благодарности: 673

Профиль | Отправить PM | Цитировать


Какие критерии выбора этой неизвестной папки? %foldername% содержит имя последней папки при сортировке по-умолчанию (по имени). dir /B /A:D /O:D даст самую свежую папку в конце.

Отправлено: 23:43, 01-05-2024 | #6


Аватара для minutka15

Пользователь


Сообщения: 141
Благодарности: 11

Профиль | Отправить PM | Цитировать


Проблему с перетаскиванием решил создавая файл вместо папки.
Создаю файл с нужным мне именем с любым расширением (в моем случае .ai)

Код: Выделить весь код
@echo off

for %%A in (*.ai) do set "filename=%%~nA"
for %%f in (*.exe,*.bmp) do (
md "%%~nf\%filename%"
move "%%f" "%%~nf\%filename%"
)
for %%f in (*.txt) do (
move "%%f" "%%~nf"
)
del "*.ai" /q
Exit /b
Конвертировав батник в .exe работает из папки на правый клик мышки

-------
We don't call 911


Отправлено: 23:58, 02-05-2024 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Назначить переменную названия папки имя которой неизвестно

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление файлов из папки, имя которой всегда разное BKPB Скриптовые языки администрирования Windows 17 27-05-2020 10:25
Delphi - Присвоить файлу имя папки в которой он находится Fly5 Программирование и базы данных 10 22-06-2015 14:28
CMD/BAT - [решено] Найти в реестре параметр и записать в переменную имя ветки в которой он находится root221 Скриптовые языки администрирования Windows 11 25-11-2012 07:54
CMD/BAT - [решено] Записать имя папки в которой лежит батник в переменную а потом эту же папку переим. bobr95 Скриптовые языки администрирования Windows 8 10-04-2012 18:42
Как создать переменную, имя которой такоеже как значение + несколько латин. символов? E-mail Вебмастеру 12 26-11-2005 10:14




 
Переход