标题: [文件操作] 批处理如何显示某个目录下的特定文件 [打印本页]
作者: netdzb 时间: 2020-5-16 19:56 标题: 批处理如何显示某个目录下的特定文件
- @echo off
- for %%i in (*.py) do (
- echo %cd%%%i
- )
- pause
复制代码
// 上面是显示盘符的,如何去掉盘符???
// 我是用切割字符的方法,可惜结果运行不对啊。
// 还有别的方法吗?- for %%i in (*.py) do (
- echo %cd:~3%%%i
- )
- pause
复制代码
作者: ivor 时间: 2020-5-16 20:19
- for %%i in (*.py) do (
- echo %%~pnxi
- )
复制代码
作者: Batcher 时间: 2020-5-16 21:45
回复 1# netdzb
能否说明一下 echo %cd:~3%%%i 的结果跟你期望的结果差异是什么?
作者: netdzb 时间: 2020-5-16 23:11
本帖最后由 netdzb 于 2020-5-16 23:14 编辑
回复 3# Batcher
我输出的结果是,假设当前目录是avs
我输出的是avshello.py,好像我字符串分割没有完全学好。
我希望得到avs\hello.py,当然斜杆我能加上去。
作者: Batcher 时间: 2020-5-16 23:51
回复 4# netdzb
我测试你的代码无法重现此问题,能否把你的目录结构和bat文件打包压缩传上来我试试?
作者: netdzb 时间: 2020-5-17 04:44
本帖最后由 netdzb 于 2020-5-17 04:47 编辑
回复 5# Batcher
里面一共4个版本代码,运行环境windows xp和win7的32位旗舰版本,
都出现了我描述的问题。
是不是command.com这个文件有问题?
https://javame.lanzous.com/icplvhg
作者: xp3000 时间: 2020-5-17 08:03
或许这个是你想表达的,获取批处理所在目录名和目录内的指定类型文件名- @echo off
- for /f "delims=" %%a in ('dir /b/a-d/oN *.py') do (for %%b in ("%%a\..") do (
- echo %%~nb\%%~nxa
- )
- )
- pause
复制代码
这个多级- @echo off
- for /f "tokens=1,* delims=\" %%a in ('dir /a-d /b /s *.py') do (for %%i in ("%%b\..") do (
- echo %%~ni\%%~nxb
- )
- )
- pause
复制代码
作者: Batcher 时间: 2020-5-17 08:36
回复 6# netdzb
可能不是command.com这个文件有问题,而是你对%cd%的理解有问题。改用别人提供的方案吧。
作者: Batcher 时间: 2020-5-17 08:39
回复 6# netdzb
分别说下2楼、7楼代码的结果跟你的预期结果有哪些差异吧
作者: netdzb 时间: 2020-5-17 08:53
回复 9# Batcher
2楼的结果是
\avs\hello.py
我预期的是avs\hello.py
7楼的一会打开电脑再试。
作者: netdzb 时间: 2020-5-18 13:21
本帖最后由 netdzb 于 2020-5-18 13:36 编辑
回复 2# ivor
如果用shell应该怎么写?假设需要遍历目录下面还有二级子目录,需要遍历文件夹下所有的*.py文件。
for file in `ls $1` // 如果需要遍历所有的*.py是不是这里
for file in `ls $1` // 是不是这里加上grep方法就可以了?
我找到了这个脚本,但是是递归的方法。
#! /bin/bash
function read_dir(){
for file in `ls $1` #注意此处这是两个反引号,表示运行系统命令
do
if [ -d $1"/"$file ] #注意此处之间一定要加上空格,否则会报错
then
read_dir $1"/"$file
else
echo $1"/"$file #在此处处理文件即可
fi
done
}
#读取第一个参数
read_dir $1
作者: ivor 时间: 2020-5-18 16:50
shell不熟,不好意思
作者: smss 时间: 2020-5-18 20:42
- @echo off
- for %%i in (*.py) do Set "P=%%~pnxi"
- echo %P:~1%
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |