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

[文件操作] [已解决]批处理中传递变量遇到问题,请指点为盼

本帖最后由 angelbd 于 2014-11-20 19:45 编辑

请教一下,我想实现通过批处理自动确认可移动磁盘(U盘)的盘符,然后判断其是否存在jobs文件夹,有就执行一命令,没有的话就创建该文件夹并执行一命令。我遇到的问题是已经取得正确的可移动磁盘的盘符,却不能传递其值给后面的语句,不能实现预期目的。我的批处理内容如下:
@echo off
cls
for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do fsutil fsinfo drivetype %%i: | find "可移动">nul
set var=%%i:
if not exist (%var%\jobs) (md %var%\jobs)  
del %var%\jobs\*.* /q>nul
copy D:\经纬软件\经纬标签打印系统\PrintLable\jobs  %var%\jobs /y >nul
del D:\经纬软件\经纬标签打印系统\PrintLable\jobs\*.* /q >nul  

请高手们热心帮忙指点一下为盼。谢谢了!
天道酬勤、地道酬善、人道酬诚、商道酬信、业道酬精。

set var=%%i: 这个用法是错误的,%%i只能在for循环内部使用。

参考一下别人的脚本吧:
http://bbs.bathome.net/thread-3569-1-1.html

TOP

do 后方功能语句应为一语句块,即你须将相关功能用()括起来或者用&连起来,同时,如果你要在语句块内调用实时变量取值,还需开启延时变量,并将变量引用由%%改为!!

TOP

仅对语法部分作更改。
  1. @echo off
  2. cls
  3. setlocal enabledelayedexpansion
  4. for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
  5. fsutil fsinfo drivetype %%i: | find "可移动">nul && (
  6. set var=%%i:
  7. if not exist (!var!\jobs) (md !var!\jobs)
  8. del !var!\jobs\*.* /q>nul
  9. copy D:\经纬软件\经纬标签打印系统\PrintLable\jobs  !var!\jobs /y >nul
  10. del D:\经纬软件\经纬标签打印系统\PrintLable\jobs\*.* /q >nul
  11. )
  12. )
  13. pause>nul
复制代码

TOP

回复 4# amwfjhh


    谢谢指教
天道酬勤、地道酬善、人道酬诚、商道酬信、业道酬精。

TOP

回复 4# amwfjhh


   试了下还是不行,没有达到预期目的。还请继续帮忙指点
天道酬勤、地道酬善、人道酬诚、商道酬信、业道酬精。

TOP

你预期的目的是什么?把文件夹下的东西全部拷过去?那你不应该用copy,而是xcopy,具体用法看下帮助吧。还有,仅本例而言,其实完全用不着中间set个变量的,直接对%%i进行路径组装就行了。

TOP

回复 7# amwfjhh


    我想实现,自动判断插入的U盘盘符,并判断其根目录下有无jobs文件夹,有则先清空该文件夹;若没有该文件夹,则创建该文件夹。在此基础上再复制硬盘上指定文件夹中的文件到U盘下的jobs文件夹下。
天道酬勤、地道酬善、人道酬诚、商道酬信、业道酬精。

TOP

@echo off
cls
for %%i in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
        fsutil fsinfo drivetype %%i: | find "可移动">nul && (
        xcopy D:\经纬软件\经纬标签打印系统\PrintLable\jobs  %%i:\jobs  /s /q  >nul
        del D:\经纬软件\经纬标签打印系统\PrintLable\jobs\*.* /q >nul
        )
)     这段如果能正确执行也能实现
天道酬勤、地道酬善、人道酬诚、商道酬信、业道酬精。

TOP

用XCOPY /E /Q ... ...试试。

TOP

回复 10# amwfjhh


    还是不行,不能在U盘建立文件夹
天道酬勤、地道酬善、人道酬诚、商道酬信、业道酬精。

TOP

你没建文件夹啊

TOP

回复 12# amwfjhh


实现目的:自动判断插入的U盘盘符,并判断其根目录下有无jobs文件夹,有则先清空该文件夹;若没有该文件夹,则创建该文件夹。在此基础上再复制硬盘上指定文件夹中的文件到U盘下的jobs文件夹下。
天道酬勤、地道酬善、人道酬诚、商道酬信、业道酬精。

TOP

我的意思是,你最后的那个代码,把创建文件夹那步删掉了,所以不成功。

TOP

回复 9# angelbd


    %%i:\jobs  后面加个斜杠,必需的:%%i:\jobs\

TOP

返回列表