Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 批处理-使用带有空格的获取文件名_File_Batch File - Fatal编程技术网

File 批处理-使用带有空格的获取文件名

File 批处理-使用带有空格的获取文件名,file,batch-file,File,Batch File,在我的程序中,我从一堆文件夹中提取文件名,其中一些文件夹有空格。我试着用引号把它们引起来。我试着把set加上引号。我试过延迟扩展。到目前为止,我已经尝试了我能找到的一切 当前的相关代码: SET "FTPFOLDER=C:\temp" REM THIS GOES THROUGH THE FILE SYSTEM INITIALLY. pause for /f "delims=" %%f in ('dir /b "%FTPFOLDER%"') do (call :Search "%%f") p

在我的程序中,我从一堆文件夹中提取文件名,其中一些文件夹有空格。我试着用引号把它们引起来。我试着把set加上引号。我试过延迟扩展。到目前为止,我已经尝试了我能找到的一切

当前的相关代码:

SET "FTPFOLDER=C:\temp"


REM THIS GOES THROUGH THE FILE SYSTEM INITIALLY.
pause
for /f "delims=" %%f in ('dir /b "%FTPFOLDER%"') do (call :Search "%%f") 
pause

REM GOES THRU EACH OF THE FILES IN EACH OF THE FOLDERS. IF THE FILE READ IS A FOLDER, IT GOES SEARCHES DEEPER INTO THE FOLDER.

:Search
setlocal enabledelayedexpansion
for /f "delims=" %%g in ('dir /b "%FTPFOLDER%\%~1"') do (if exist "%FTPFOLDER%\%~1\%%g\*" (
set nsearch =%~1\%%g
call :Search !nsearch!
)  else (
set filedir = %FTPFOLDER%\%~1\%%g\
set filename = %%~ng
call :checkSize  !filedir!, !filename!
)
)
pause
EXIT /B 0

REM CHECKS IF ZERO 
:checkSize
pause
set file="%~1"
@echo %file%
for /f "usebackq" %%h in ('%file%') do (set size=%%~zh)
if %size% EQU 0 (call :Rename "%file%", %~2)
pause
EXIT /B 0

REM - RENAMES FILE TO .EMPTY
:Rename
pause
ren %~1 %~2.empty
pause
EXIT /B 0

老实说,我已经尝试了我所看到的一切,但都没有成功。非常感谢您的任何帮助

实际上,我没有从中了解到什么是错误的,除了我的变量没有按预期的方式工作,我已经知道这一点,你可以从告诉我们哪里出了问题开始。不要在
集合中的
=
赋值中在
=
周围加空格,因为它们成为变量名和值的一部分,否则@首先,如果您在
call
命令行中引用逗号,它们不是问题,因为
cmd
将它们解释为令牌分隔符,如空格、制表符、
=
…实际上,我没有从中了解到什么是错误的,除了我的变量没有按照它们应该的方式工作,我已经知道了这一点。你可以从告诉我们哪里出错开始。不要在
集合
赋值中的
=
周围加空格,因为它们成为变量名和值的一部分,否则@首先,如果您在
call
命令行中引用逗号,它们不是问题,因为
cmd
将它们解释为令牌分隔符,如空格、制表符、
=
。。。