2016-09-20 2 views
0

У меня есть следующий код для проверки md5sum моих изображений:Как сделать команду md5sum отображать только значение хэша без пути в пакетном режиме?

for /f "delims=" %%i in ('md5sum U:/imagingusb/%UserInputPath%/Image/usbimage.iso') do set output=%%i 
for /f "delims=" %%i in ('md5sum /dev/sdb1') do set outputusb=%%i 
echo %output% 
echo %outputusb% 

Вывод, который я получаю это:

9a4a227e872f7130652f403c568d0081 */dev/sdb1 
9a4a227e872f7130652f403c568d0081 *U:/imagingusb/dfgg/Image/usbimage.iso 

Как Задачи и результаты только хеш-значение без пути к моему ISO-образ? Просто это:

9a4a227e872f7130652f403c568d0081 
9a4a227e872f7130652f403c568d0081 
+0

Вы можете попробовать echo% output% | awk '{print $ 1}' и echo% outputusb% | awk '{print $ 1}' –

+0

Действительно ли это bash? Я думал, что переменные bash используют '$ output'. – Jokester

+0

Извините, это пакетный скрипт для Windows –

ответ

1

По умолчанию for петли разметить выход на пространствах и вкладки. Если вы не укажете, какие маркеры будут возвращены, вы сможете использовать только первый (for /f %%A in ("this is a string") do echo %%A возвращает this и echo %%B возвращает %B вместо is).

Чтобы получить md5 контрольную сумму самого по себе, вы можете просто удалить "delims=" в коде:

for /f %%i in ('md5sum U:/imagingusb/%UserInputPath%/Image/usbimage.iso') do set output=%%i 
for /f %%i in ('md5sum /dev/sdb1') do set outputusb=%%i 
echo %output% 
echo %outputusb% 

, если вам необходимо использовать пути к чему-то еще по какой-либо причине, вы можете хранить их в отдельном (в этом примере %%j):

for /f "tokens=1,*" %%i in ('md5sum U:/imagingusb/%UserInputPath%/Image/usbimage.iso') do set output=%%i 
for /f "tokens=1,*" %%i in ('md5sum /dev/sdb1') do set outputusb=%%i 
echo %output% 
echo %outputusb% 
+0

большое спасибо. Просто удалили «delims». Оно работает –

Смежные вопросы