2013-06-28 3 views
0

В принципе, я совершенно новичок в autohotkey и задавался вопросом, можно ли создать сценарий, чтобы при нажатии кнопки открывается окно браузера файлов, затем вы выбираете столько файлов, сколько хотите, но если размер файла превышает 1000 МБ, тогда вы больше не можете выбирать файлы, после чего файлы, которые у вас есть, копируются на USB-накопитель на компьютере, также, как бы я хотел убедиться, что файловый браузер не может открыть какие-либо файлы (т. е. нажмите и нажмите открытым при просмотре файлов, вы можете выбрать только файлы? Thankyou,Как получить размер файла, выбранного пользователем (autohotkey)?

+0

Да, это возможно. Что вы пробовали? –

+0

Да, это возможно. Проверка размера и копирование выбранных файлов не будет проблемой. Однако отключение открытия файлов было бы сложной задачей. Зачем вам это нужно? –

ответ

0

Ха, я просто смотрю на эту функцию сегодня!

Посмотрите на FileGetSize

Вот что в документации:

Файлы любого размера поддерживаются, даже более 4 гигабайт, и даже если Единиц байт.

Если целевой файл является каталогом, размер будет указываться как независимо от того, какая ОС считает это (вероятно, нулевой во всех случаях).

Чтобы рассчитать размер папки, включая все ее файлы, следовать этому пример:

SetBatchLines, -1 ; Make the operation run at maximum speed. 
FolderSize = 0 FileSelectFolder, WhichFolder ; Ask the user to pick a folder. 
Loop, %WhichFolder%\*.*, , 1 
    FolderSize += %A_LoopFileSize% 
MsgBox Size of %WhichFolder% is %FolderSize% bytes. 

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

В принципе, вы не «отключите» открытие файлов, вместо этого вы просто сделаете что-то другое!

Например, если вы запустите это как скрипт, он отобразит диалог с файловым браузером, но вместо открытия файла в любой программе он запустит на нем функцию FileGetSize, а затем отобразит сообщение с файлом размер:

gosub, fileopen 

FileOpen: 
    FileSelectFile, thisfile, 3,startdirectory, Select Files, Any File (*.*; *.gabc) 

    if(thisfile){ 
     filegetsize, thisfilesize, %thisfile% 
     msgbox, %thisfilesize% 
     return 
    }else{ 
     return 
    } 
return 

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