㈠ 如何用批处理,把当前文件夹中的所有文件夹名、文件名提取出来,生成txt文件
以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI
@echo off
rem 将当前目录下的所有文件和文件夹的路径输出/导出一个以指定字符串和当前日期组合命名的txt文本文件里
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
for /f "tokens=2 delims==." %%a in ('wmic OS get LocalDateTime /value^|find "="') do set t=%%a
set today=%t:~,4%-%t:~4,2%-%t:~6,2%
dir /b/s>"contents(%today%).txt"
echo;%#% +%$%%$%/%@% %z%
pause
exit
㈡ 批处理:文件夹内都是图片,想要提取文件夹内所有的文件名+修改时间(要含分秒)生成exce的XLSX格式
第一步:将压缩包解压到一个空文件夹里
第二步:进入这个文件夹,点当前窗口工具栏的【搜索】(你知道什么叫工具栏吧?),于是在左侧出现搜索栏
第三步:在【要搜索的文件或文件夹名为】框里填*.* 就会搜索出当前文件夹下的所有文件和子文件夹
第四步:然后在右侧的空白区域点右键,【排列图标】-【名称】,即可把所有的文件和文件夹分开
第五步:再用Shift键选中所有文件,复制或者剪切就随你了,剩下的不用说了吧~~~、
祝你好运哦!
㈢ 批处理获取文件名并保存至变量中
1 其实另保存为"数组"变量是没必要的,要作什么直接在for循环内写命令就能办到的。
2 所列代码已将文件夹名保存到"数组"变量中了,但由于set array_!n! = %%i 这句等号前有空格,数组变量名其实在每个之后就也要带等量空格才匹配,而等号后有空格则所赋的文件夹名每个前也带了空格,因此应该去掉此句等号前后的空格
3 echo %array_!n!%这句是不合格的,要写成call echo %%array_!n!%%
4 针对第2条修改后,后一个for命令就能正常显示了,但"数组"起止值不对,各扩大了1个的范围
㈣ 批处理获取文件名并提取当前文件夹名
假设当前文件夹为aaa,且批处理文件在当前文件夹下,生成的txt文件也放在当前文件夹下的话:
@echo off
dir/b/s>aaa.txt
pause
如果不含子文件夹内容的话,/s参数可以省略
㈤ 批处理如何提取文件位置和文件名 不包括后缀
请参考:
@echo off
set str1=C:\abc\file1.abc
call :show %str1%
echo %str2%
pause
goto :eof
:show
set str2=%~dpn1
简要说明:对于变量%0~%9及for里使用的%i这样的变量,可以有以下的语法:
~I - 删除任何引号("),扩充 %I
%~fI - 将 %I 扩充到一个完全合格的路径名
%~dI - 仅将 %I 扩充到一个驱动器号
%~pI - 仅将 %I 扩充到一个路径
%~nI - 仅将 %I 扩充到一个文件名
%~xI - 仅将 %I 扩充到一个文件扩展名
%~sI - 扩充的路径只含有短名
%~aI - 将 %I 扩充到文件的文件属性
%~tI - 将 %I 扩充到文件的日期/时间
%~zI - 将 %I 扩充到文件的大小
以上的结果是可以组合的。我们可以通过"%~dpn"这样形式的组合获取一个路径形式的变量的路径及文件名的组合。
在这里,首先我假设"C:\abc\file1.abc"已经在一个变量里面,因为调用它使用的是"%%"的格式,不能扩充,所以我们需要使用call调用一段代码来将它转换成%1的形式。所以你看到了"call :show %str1%" 这一句,通过这里调用call标签后的语句。
另外一个需要注意的是在被调用的":show"标签前面是一句"goto :eof",表示批处理运行至此跳转至文件末尾(也就是退出程序),后面的":show"标签就不会运行了,
相信建立一个C:\abc\file1.xyz这样形式的文件对你来说不是问题,我就不写了