D
Dmitry Anikin
I'm using win xp sp2.
The folder exists, that I know for sure, but I must know if it contains any file or subfolder.
Is there any SIMPLE way to do it????
I tried:
if exists folder\*.*
if exists folder\*
if exists folder\?
if exists folder\?.?
---- it always true, I think because there're always "." and ".." subfolders in a folder.
I could use something like: dir folder /b > tmpfile, then check whether tmpfile is empty
but it is very cumbersome and I (don't want) || (cannot ) use temp files.
I tried dir folder /b | set /p myvar=
But you cannot access myvar later, 'cause it's created in another context.
By the way, why doesn't this work:
dir folder /b | (set /p myvar= & echo %myvar%)
or
dir folder /b | (setlocal enabledelayedexpansion & set /p myvar= & echo !myvar!)
-it echoes string '!myvar!', although
dir folder /b | (set /p myvar= & set myvar)
shows that myvar really gets the name of first item in a dir
I tried xcopy /e folder\*.* nul and it always returns an error
although copy folder\*.* nul can be used and it returns errorlevel 1
if no file exists, but it doesn't care for subfolders! Also, copying a big
folder even to nul can be a performance problem.
for %%i in (folder\*) ---- doesn't check subdirs
if FOR checks subdirs (like in: for /r %%i in (.), for /d ...) it doesn't check files
For now I've settled for this:
for %%i in (folder\*) do goto notempty
for /d %%i in (folder\*) do goto notempty
rem here it's empty
goto cont
:notempty
rem and here it is not
but it's way too complex for such an easy task,
and also FOR doesn't check for hidden files.
Any suggestions?
The folder exists, that I know for sure, but I must know if it contains any file or subfolder.
Is there any SIMPLE way to do it????
I tried:
if exists folder\*.*
if exists folder\*
if exists folder\?
if exists folder\?.?
---- it always true, I think because there're always "." and ".." subfolders in a folder.
I could use something like: dir folder /b > tmpfile, then check whether tmpfile is empty
but it is very cumbersome and I (don't want) || (cannot ) use temp files.
I tried dir folder /b | set /p myvar=
But you cannot access myvar later, 'cause it's created in another context.
By the way, why doesn't this work:
dir folder /b | (set /p myvar= & echo %myvar%)
or
dir folder /b | (setlocal enabledelayedexpansion & set /p myvar= & echo !myvar!)
-it echoes string '!myvar!', although
dir folder /b | (set /p myvar= & set myvar)
shows that myvar really gets the name of first item in a dir
I tried xcopy /e folder\*.* nul and it always returns an error
although copy folder\*.* nul can be used and it returns errorlevel 1
if no file exists, but it doesn't care for subfolders! Also, copying a big
folder even to nul can be a performance problem.
for %%i in (folder\*) ---- doesn't check subdirs
if FOR checks subdirs (like in: for /r %%i in (.), for /d ...) it doesn't check files
For now I've settled for this:
for %%i in (folder\*) do goto notempty
for /d %%i in (folder\*) do goto notempty
rem here it's empty
goto cont
:notempty
rem and here it is not
but it's way too complex for such an easy task,
and also FOR doesn't check for hidden files.
Any suggestions?