Ответ Марка Колемана, безусловно, намного лучше, чем выбранный ответ, но если вы хотите избежать глобальной переменной для идентификатора тайм-аута (переменная doit
в ответе Марка), вы можете сделать одно из следующего:
(1) Для создания замыкания используйте выражение, вызванное немедленно вызываемым (IIFE).
$(window).resize((function() { // This function is immediately invoked
// and returns the closure function.
var timeoutId;
return function() {
clearTimeout(timeoutId);
timeoutId = setTimeout(function() {
timeoutId = null; // You could leave this line out.
// Code to execute on resize goes here.
}, 100);
};
})());
(2) Используйте свойство функции обработчика событий.
$(window).resize(function() {
var thisFunction = arguments.callee;
clearTimeout(thisFunction.timeoutId);
thisFunction.timeoutId = setTimeout(function() {
thisFunction.timeoutId = null; // You could leave this line out.
// Code to execute on resize goes here.
}, 100);
});
Можно сделать это как так:
IF EXIST %VAR%\NUL ECHO It's a directory
Однако это только работает на каталоги без пробелов на их имена. Когда Вы добавите кавычки вокруг переменной для обработки пробелов, она прекратит работать. Для обработки каталогов с пробелами преобразуйте имя файла для закорачивания 8,3 форматов следующим образом:
FOR %%i IN (%VAR%) DO IF EXIST %%~si\NUL ECHO It's a directory
Эти %%~si
преобразовывает %%i
в 8,3 имен файла. Для наблюдения всех других приемов, можно выполнить с FOR
, переменные входят HELP FOR
в командной строке.
(Примечание - пример, данный выше, находится в формате для работы в пакетном файле. Для получения его работа над командной строкой замените %%
%
в обоих местах.)
На основе эта статья , названная, "Как пакетный файл может протестировать существование каталога", это "не совсем надежно".
, НО я просто протестировал это:
@echo off
IF EXIST %1\NUL goto print
ECHO not dir
pause
exit
:print
ECHO It's a directory
pause
и это, кажется, работает
Вот сценарий, который использует ДЛЯ создать полностью определенный путь, и затем pushd, чтобы протестировать, является ли путь каталогом. Заметьте, как это работает на пути с пробелами, а также сетевые пути.
@echo off
if [%1]==[] goto usage
for /f "delims=" %%i in ("%~1") do set MYPATH="%%~fi"
pushd %MYPATH% 2>nul
if errorlevel 1 goto notdir
goto isdir
:notdir
echo not a directory
goto exit
:isdir
popd
echo is a directory
goto exit
:usage
echo Usage: %0 DIRECTORY_TO_TEST
:exit
Демонстрационный вывод с вышеупомянутым, сохраненным как "isdir.bat":
C:\>isdir c:\Windows\system32
is a directory
C:\>isdir c:\Windows\system32\wow32.dll
not a directory
C:\>isdir c:\notadir
not a directory
C:\>isdir "C:\Documents and Settings"
is a directory
C:\>isdir \
is a directory
C:\>isdir \\ninja\SharedDocs\cpu-z
is a directory
C:\>isdir \\ninja\SharedDocs\cpu-z\cpuz.ini
not a directory
я думаю, что существует некоторая трудность с помощью техники "NUL", когда существуют ПРОБЕЛЫ в имени каталога, такие как "Documents and Settings".
я использую пакет обновления Windows XP 2 и запускаюсь, подсказка cmd от %SystemRoot %\system32\cmd.exe
Вот некоторые примеры того, что DID НЕ работают и что ДЕЙСТВИТЕЛЬНО РАБОТАЕТ на меня:
(Это все демонстрации, сделанные "живой" при интерактивной подсказке. Я полагаю, что необходимо получить вещи работать там прежде, чем попытаться отладить их в сценарии.)
Этот DID НЕ работайте:
D:\Documents and Settings>if exist "D:\Documents and Settings\NUL" echo yes
Этот DID НЕ работайте:
D:\Documents and Settings>if exist D:\Documents and Settings\NUL echo yes
Это ДЕЙСТВИТЕЛЬНО работает (на меня):
D:\Documents and Settings>cd ..
D:\>REM get the short 8.3 name for the file
D:\>dir /x
Volume in drive D has no label.
Volume Serial Number is 34BE-F9C9
Directory of D:\
09/25/2008 05:09 PM <DIR> 2008
09/25/2008 05:14 PM <DIR> 200809~1.25 2008.09.25
09/23/2008 03:44 PM <DIR> BOOST_~3 boost_repo_working_copy
09/02/2008 02:13 PM 486,128 CHROME~1.EXE ChromeSetup.exe
02/14/2008 12:32 PM <DIR> cygwin
[[Взгляд прямо здесь!!!!]]
09/25/2008 08:34 AM <DIR> DOCUME~1 Documents and Settings
09/11/2008 01:57 PM 0 EMPTY_~1.TXT empty_testcopy_file.txt
01/21/2008 06:58 PM <DIR> NATION~1 National Instruments Downloads
10/12/2007 11:25 AM <DIR> NVIDIA
05/13/2008 09:42 AM <DIR> Office10
09/19/2008 11:08 AM <DIR> PROGRA~1 Program Files
12/02/1999 02:54 PM 24,576 setx.exe
09/15/2008 11:19 AM <DIR> TEMP
02/14/2008 12:26 PM <DIR> tmp
01/21/2008 07:05 PM <DIR> VXIPNP
09/23/2008 12:15 PM <DIR> WINDOWS
02/21/2008 03:49 PM <DIR> wx28
02/29/2008 01:47 PM <DIR> WXWIDG~2 wxWidgets
3 File(s) 510,704 bytes
20 Dir(s) 238,250,901,504 bytes free
D:\>REM now use the \NUL test with the 8.3 name
D:\>if exist d:\docume~1\NUL echo yes
yes
Это работает, но это - вид глупых, потому что точка уже подразумевает, что я нахожусь в каталоге:
D:\Documents and Settings>if exist .\NUL echo yes
Это работает:
if exist %1\* echo Directory
Работает с именами каталогов, которые содержат пробелы:
C:\>if exist "c:\Program Files\*" echo Directory
Directory
Обратите внимание, что кавычки необходимы, если каталог содержит пробелы:
C:\>if exist c:\Program Files\* echo Directory
Также можно выразить как:
C:\>SET D="C:\Program Files"
C:\>if exist %D%\* echo Directory
Directory
Это безопасно, дети, попробовать дома!
tabStops
иstyle
, пока приписанная строка, которая использует их, не выпущена. В моем проекте у меня были к propertize все находящиеся в собственности компоненты стиля для удержаний от получения EXC_BAD_ACCESS. – Wienke 31 March 2012 в 04:44