[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何显示某个目录下的特定文件

  1. @echo off
  2. for %%i in (*.py) do (
  3.         echo %cd%%%i
  4.     )
  5. pause
复制代码
// 上面是显示盘符的,如何去掉盘符???
// 我是用切割字符的方法,可惜结果运行不对啊。
// 还有别的方法吗?
  1. for %%i in (*.py) do (
  2.         echo %cd:~3%%%i
  3.     )
  4. pause
复制代码

  1. for %%i in (*.py) do (
  2.         echo %%~pnxi
  3.     )
复制代码
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

回复 1# netdzb


    能否说明一下 echo %cd:~3%%%i 的结果跟你期望的结果差异是什么?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 netdzb 于 2020-5-16 23:14 编辑

回复 3# Batcher


我输出的结果是,假设当前目录是avs

我输出的是avshello.py,好像我字符串分割没有完全学好。

我希望得到avs\hello.py,当然斜杆我能加上去。

TOP

回复 4# netdzb


    我测试你的代码无法重现此问题,能否把你的目录结构和bat文件打包压缩传上来我试试?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 netdzb 于 2020-5-17 04:47 编辑

回复 5# Batcher

里面一共4个版本代码,运行环境windows xp和win7的32位旗舰版本,
都出现了我描述的问题。
是不是command.com这个文件有问题?

https://javame.lanzous.com/icplvhg

TOP

或许这个是你想表达的,获取批处理所在目录名和目录内的指定类型文件名
  1. @echo off
  2. for /f "delims=" %%a in ('dir /b/a-d/oN *.py') do (for %%b in ("%%a\..") do (
  3.         echo %%~nb\%%~nxa
  4.     )
  5. )
  6. pause
复制代码
这个多级
  1. @echo off
  2. for /f "tokens=1,* delims=\" %%a in ('dir /a-d /b /s *.py') do (for %%i in ("%%b\..") do (
  3.         echo %%~ni\%%~nxb
  4.     )
  5. )
  6. pause
复制代码

TOP

回复 6# netdzb


    可能不是command.com这个文件有问题,而是你对%cd%的理解有问题。改用别人提供的方案吧。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 6# netdzb


    分别说下2楼、7楼代码的结果跟你的预期结果有哪些差异吧
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 9# Batcher

2楼的结果是
\avs\hello.py
我预期的是avs\hello.py
7楼的一会打开电脑再试。

TOP

本帖最后由 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

TOP

shell不熟,不好意思
#&cls&@powershell "Invoke-Expression ([Io.File]::ReadAllText('%~0',[Text.Encoding]::UTF8))" &pause&exit

TOP

  1. @echo off
  2. for %%i in (*.py) do Set "P=%%~pnxi"
  3. echo %P:~1%
  4. pause
复制代码

TOP

返回列表