У меня есть пакетный скрипт, который принимает> = 1 файл через drag & drop. Полные пути хранятся в массиве и затем передаются в другую программу в качестве входных данных. Имя файла + расширение хранится в другом массиве, который затем отображается пользователю.Пакетный скрипт, перетаскивание и перетаскивание файла, расширение и перезагрузка файла
Я пытаюсь проверить расширение файла, и если оно не является .bin, автоматически переименуйте файл, который я перетащил &, упал на .bin и перезагрузил его для добавления к двум массивам. Как я могу это сделать? Я пробовал некоторые команды if или %% ~ xi, но обычно он не обнаруживает, правильно ли это .bin или нет, и, конечно, путь не обновляется в массиве.
@echo off
pushd %~dp0
setlocal enabledelayedexpansion
set /a Count = 0
:START
set file="%~1"
if %file%=="" goto RUN
for %%i in (%file%) do set name=%%~nxi
set /a Count += 1
set [FilePath.!Count!]=%file%
set [FileName.!Count!]=%name%
shift
goto START
:RUN
for /l %%i in (1, 1, %Count%) do (
program.exe -command "![FilePath.%%i]!"
echo.
echo File Name: ![FileName.%%i]!
echo.
pause
cls
if exist file.log del file.log
)
Большое спасибо, это работает отлично. Моя следующая забота заключалась в том, чтобы сохранить файл с тем же расширением, который вы добавили, и работает. Теперь, чтобы проверить, правильно ли я понял изменения: 1)% I -> файл с перетаскиванием и сбросом 2)% * -> условие, вернет false после последнего сброшенного файла? 3) %% ~ fI -> расширяет% I до полного пути (не было ли уже после% I)? 4)% ~ dpnI -> расширяет% I на диск, путь, имя и добавляет .bin (желаемое расширение) – Plato
5)> NUL -> Я прочитал, что он поддерживает уведомление о перемещении, поэтому эффект только визуальный 6)% ~ dpnI.bin -> программа загружается% I с правильным расширением, где находится этот файл (временная папка)? 7) В элементе FileName echo, если расширение% I теперь переименовано правильно, не можем ли мы использовать %% ~ nxI? В основном я не знаю, как работала команда перемещения оператора IF. Вы можете объяснить это, пожалуйста? – Plato
** 1: ** Да. ** 2: ** Просто проходит все аргументы. Если аргументов нет, то ничего не происходит. Нет возврата. ** 3: ** Да, но нет никакой двусмысленности с '%% ~ fI'. ** 4: ** Да. ** 5: ** Да. ** 6: ** Тот же каталог. Я использовал 'move', а не' ren', потому что 'ren' задыхается, если вы не находитесь в том же каталоге, что и файл, который вы переименовываете. ** 7: ** Мы не изменяем действительную переменную '%% I'. Подумайте об этом как о переменной только для чтения. Мы можем переименовать файл, который он содержит, но не можем изменить эту переменную. Поэтому даже после перемещения/переименования '%% I' имеет то же значение, что и в начале цикла. – rojo