中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何将当前某一目录下的文件复制到找到的目录?
« [1] [2] »
作者:
标题: 如何将当前某一目录下的文件复制到找到的目录? 上一主题 | 下一主题
tr0217
初级用户




积分 40
发帖 23
注册 2008-11-6
状态 离线
『楼 主』:  如何将当前某一目录下的文件复制到找到的目录?

在编程的集成环境里添加API时
需要将include,bin,lib文件夹中文件放入编译器(不是集成环境)可以引用的include,bin,lib文件夹中


但不同的编译器所的lib文件不同,不能放乱了

例如gcc的mingw32版的编译器应用很广泛,对c++的标准支持很好
为mingw32安装api时,需要将当前include,bin,lib文件夹中的文件复制到mingw32文件夹下的include,bin,lib文件夹中,

很有可能你的电脑上同装了borland c++编译器,Borland文件夹下也有include,bin,lib文件夹,复制时不能复制到这里边来了

比处理写的时候,提示需要为何种编译器配置API,然后将合适的lib方入到该编译器可以引用的lib文件夹中

[ Last edited by tr0217 on 2008-11-6 at 23:43 ]

2008-11-6 19:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tr0217
初级用户




积分 40
发帖 23
注册 2008-11-6
状态 离线
『第 2 楼』:  

有人可能会说,API直接安装到另外的文件夹下,然后设置环境变量,注册dll,ax文件
这种代码我会写,

我下在的一些API安装程序,就采用的这种方式,但根本就不能用,复制到编译器可以引用的文件夹下才百分百的可用

此外自己写的一些小型的API,也可以用这用方式,配给编译器。

希望给出代码,最好带点注释,谢谢

2008-11-6 20:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 3 楼』:  

疑问:

1.

  Quote:
提示需要为何种编译器配置API

具体是哪些?

2.要复制哪个目录下的文件,到哪个目标目录?

2008-11-6 20:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tr0217
初级用户




积分 40
发帖 23
注册 2008-11-6
状态 离线
『第 4 楼』:  

任意匹配,都是一样的,智能匹配。常用的window下的c++编译器有gcc,borland,vc++,

gcc用在集成环境下的是mingw32,
有一个文件夹mingw32,该文件夹下有名字为include,lib,bin三个分别放头文,静态库,动态库的文件夹。该文件夹在什么地方是未知的。

Borland c++在集成环境下
有一个文件夹borland,该文件夹下有名字为include,lib,bin三个分别放头文,静态库,动态库的文件夹。该文件夹在什么地方是未知的。

vc++
有一个文件夹叫vc98,该文件夹下有名字为include,lib,bin三个分别放头文,静态库,动态库的文件夹。该文件夹在什么地方是未知的。

假设API的库叫opencv
有一个文件夹叫opencv,该文件夹下有名字为include,lib,bin三个分别放头文,静态库,动态库的文件夹。该文件夹在什么地方是未知的。但安装该API的批处理在opencv这个文件夹下。

此批处理的作用是(假设是在vc++下使用的lib,就是要将opencv文件夹下的include文件夹里的所有文件及子文件夹复制到不知道在那儿的vc98下的include文件夹里;
将opencv文件夹下的bin文件夹里的所有文件及子文件夹复制到不知道在那儿的vc98下的bin文件夹里;
将opencv文件夹下的lib文件夹里的所有文件及子文件夹复制到不知道在那儿的vc98下的lib文件夹里)

我想我应该描述清楚了,希望高手给写个代码

2008-11-6 23:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tr0217
初级用户




积分 40
发帖 23
注册 2008-11-6
状态 离线
『第 5 楼』:  

我那句的意思是
该批处理,让用户输入一个参数(比如,vc++)
然后执行楼上我说的操作

2008-11-6 23:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tr0217
初级用户




积分 40
发帖 23
注册 2008-11-6
状态 离线
『第 6 楼』:  

该批出的编写思路是(大小写不敏感)
提示输入,用一个变量保存输入
比如输入vc++(%%c)
在比较输入

然后,用for循环搜索到vc98,然后将这个路径保存到一个变量里(%%p)
for %%a in (c d e) do (
for /f "delims=\" %%b in ('dir/ad/s/b %%a:\vc98')   do (

rem 主要是将路径保存到变量,这一点我不会

在copy /v /y  "%cd%\bin\*.*"    “%%p\bin\*.*”  
   copy /v /y  "%cd%\lib\*.*"    “%%p\lib\*.*”  
  copy /v /y  "%cd%\include\*.*"    “%%p\include\*.*”  

))

最后echo 成功

2008-11-6 23:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tr0217
初级用户




积分 40
发帖 23
注册 2008-11-6
状态 离线
『第 7 楼』:  

我作了详细说明
你来看看
帮忙写个代码
谢谢

2008-11-6 23:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 8 楼』:  

保存变量用 set。例如将 c 盘下 system32 这个文件夹的路径保存到变量 system32 中:
@echo off
for /f "delims=" %%a in ('dir /a:d /s /b "c:\system32"') do set system32=%%a
echo %system32%
pause
[ Last edited by tireless on 2008-11-6 at 23:54 ]

   此帖被 +1 点积分    点击查看详情   
评分人:【 tr0217 分数: +1  时间:2008-11-8 23:25


2008-11-6 23:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 9 楼』:  

是不是这样:

输入 gcc,就找到 mingw32 这个文件夹的路径,然后将批处理所在文件夹下的 include,lib,bin  这三个文件夹中的文件分别复制到 mingw32 下的 include,lib,bin 这三个文件夹中。
输入 c++,就找文件夹 borland
输入 vc++,就找 vc98。

就这三种情况?include,lib,bin 这三个文件夹下有子文件夹吗?

2008-11-7 00:12
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tr0217
初级用户




积分 40
发帖 23
注册 2008-11-6
状态 离线
『第 10 楼』:  

有子文件夹,可能还有更下一层文件夹,就是这样的

[ Last edited by tr0217 on 2008-11-7 at 20:43 ]

2008-11-7 20:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 11 楼』:  不知道这样行不行:


@echo off
:bgn
  set /p input=请输入 [gcc,c++,vc++] 其中的一个:
  if "%input%"=="gcc" set dirname=mingw32 & goto scan
  if "%input%"=="c++" set dirname=borland & goto scan
  if "%input%"=="vc++" set dirname=vc98 & goto scan
  echo 输入错误 & pause & cls & goto bgn

:scan
  cls
  echo 正在查找文件夹 "%dirname%" 的位置...
  for %%a in (c d e) do (
    for /f "delims=" %%b in ('dir /s /a:d /b "%%a:\%dirname%" 2^>nul') do (
      set dirpath=%%b& goto copyf
    )
  )

:copyf
  cls
  echo 将要复制文件到 "%dirpath%"
  echo.
  pause
  xcopy /e /H /K /y include "%dirpath%\include\" >nul
  xcopy /e /H /K /y lib "%dirpath%\lib\" >nul
  xcopy /e /H /K /y bin "%dirpath%\bin\" >nul
  echo 操作成功结束。请按任意键退出...
  pause>nul
[ Last edited by tireless on 2008-11-7 at 23:04 ]

2008-11-7 22:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tr0217
初级用户




积分 40
发帖 23
注册 2008-11-6
状态 离线
『第 12 楼』:  

可以倒是可以,但有点小问题

如果vc98这个文件在该批处理所在盘或者其它盘的根目录
该批处理会把这三个文件夹复制到当前盘的根目录
不过一般集成环境的编译器不会放在根目录下。

还是要谢谢你。
但为集成环境添加的其它编译器全都默认安装在C盘根目录下

2008-11-8 16:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tr0217
初级用户




积分 40
发帖 23
注册 2008-11-6
状态 离线
『第 13 楼』:  

我还想问个问题,
regsvr32 可以注册dll和ax文件。
我在注册ax文件是没遇到问题
注册dll是提示,无法找到UnregisterServer的入口点

2008-11-8 17:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 14 楼』:  Re 12 楼

抱歉,是存在那个问题。改一下:
@echo off
:bgn
  set /p input=请输入 [gcc,c++,vc++] 其中的一个:
  if "%input%"=="gcc" set dirname=mingw32& goto scan
  if "%input%"=="c++" set dirname=borland& goto scan
  if "%input%"=="vc++" set dirname=vc98& goto scan
  echo 输入错误 & pause & cls & goto bgn

:scan
  cls
  echo 正在查找文件夹 "%dirname%" 的位置...
  for %%a in (c d e) do (
    if exist %%a:\%dirname% set dirpath=%%a:\%dirname%& goto copyf
    for /f "delims=" %%b in ('dir /s /a:d /b "%%a:\%dirname%" 2^>nul') do (
      set dirpath=%%b& goto copyf
    )
  )
  echo 文件夹 "%dirname%" 不存在。 & pause & cls & goto bgn

:copyf
  cls
  echo 将要复制文件到 "%dirpath%"
  echo.
  pause
  xcopy /e /H /K /y include "%dirpath%\include\" >nul
  xcopy /e /H /K /y lib "%dirpath%\lib\" >nul
  xcopy /e /H /K /y bin "%dirpath%\bin\" >nul
  cls
  echo 复制成功。请按任意键退出...
  pause>nul
[ Last edited by tireless on 2008-11-8 at 17:54 ]

   此帖被 +3 点积分    点击查看详情   
评分人:【 tr0217 分数: +1  时间:2008-11-8 23:26
评分人:【 HAT 分数: +2  时间:2008-11-8 23:31


2008-11-8 17:34
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 15 楼』:  



  Quote:
Originally posted by tr0217 at 2008-11-8 05:18 PM:
我还想问个问题,
regsvr32 可以注册dll和ax文件。
我在注册ax文件是没遇到问题
注册dll是提示,无法找到UnregisterServer的入口点

这应该是 dll 文件的问题吧。

2008-11-8 17:36
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: