Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
Windows 7 DOS批处理:获取部分文件名_Windows 7_Batch File_Dos - Fatal编程技术网

Windows 7 DOS批处理:获取部分文件名

Windows 7 DOS批处理:获取部分文件名,windows-7,batch-file,dos,Windows 7,Batch File,Dos,我有一个小的批处理文件,我正试图为Windows7环境编写。它应该遍历一个目录并回显文件名的最后四个字符。到目前为止,我已经: @ECHO OFF SETLOCAL for /r C:\Users\userName\Desktop\testFolder %%g in (*) do ( Set fileName = %%~ng echo %fileName:~-4% ) 对于testFolder中的每个文件,都会回显一次“~-4”。我不知道出了什么问题,但我对批处理文件或dos不是

我有一个小的批处理文件,我正试图为Windows7环境编写。它应该遍历一个目录并回显文件名的最后四个字符。到目前为止,我已经:

@ECHO OFF

SETLOCAL
for /r C:\Users\userName\Desktop\testFolder %%g in (*) do (
   Set fileName = %%~ng
   echo %fileName:~-4%
)
对于testFolder中的每个文件,都会回显一次“~-4”。我不知道出了什么问题,但我对批处理文件或dos不是很精通。非常感谢您的帮助。

,因此在执行
设置之前,当读取
时,将计算您的
%fileName:~-4%
。使用延迟扩展

@ECHO OFF
SETLOCAL SETDELAYEDEXPANSION
for /r C:\Users\userName\Desktop\testFolder %%g in (*) do (
   Set fileName=%%~ng
   echo !fileName:~-4!
)

还请注意,
Set
命令中的空格很重要。使用这个空间,您创建了一个名为“代码>文件名> <代码>的变量,具有尾随空间。

如果您想为Windows 7专门编写程序,那么考虑PosiS壳。我应该澄清。它不是专门针对Windows7的,这只是我正在开发的操作系统。该文件可能还必须在Windows XP计算机上运行。谢谢你。