虎虎虎 发表于 2012-8-31 13:57:12

[已解决]怎样在“当前目录”新建文件夹?

本帖最后由 虎虎虎 于 2012-9-2 14:11 编辑

我通过@WorkingDir,来新建,还是在当前目录。
我的目的是:不管在那个位置,只要通过快捷键就能新建。

#region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_icon=C:\Windows\system32\SHELL32.dll|-20
#AutoIt3Wrapper_Outfile=new.exe
#endregion ;**** 参数创建于 ACNWrapper_GUI ****

#include "_FileAndDirCreate.au3"

HotKeySet("!d", "_NewDir")

While 1
         Sleep(100)
WEnd

Func _NewDir()
         
         Local $DATE

         $DATE = '\' & @YEAR & ' - ' & @MON & ' - ' & @MDAY
         ;& '-' & @HOUR & '-' & @MIN & '-' & @SEC & '\'
         
         _FileAndDirCreate(@WorkingDir & $DATE)
         
EndFunc   ;==>_NewDir



这是我在网上搜的批处理的代码:@echo off
cd/d %~dp1
set y=%date:~0,4%
set m=%date:~5,2%
set d=%date:~8,2%
mkdir "%y%-%m%-%d%"

menfan1 发表于 2012-8-31 14:00:20

_FileAndDirCreate.au3呢?

虎虎虎 发表于 2012-8-31 14:07:37

本帖最后由 虎虎虎 于 2012-8-31 14:09 编辑

回复 2# menfan1


在这里:
http://www.autoitx.com/forum.php?mod=viewthread&tid=21226&highlight=%2Blixiaolong

netsmu 发表于 2012-8-31 14:36:41

函数参考
DirCreate
--------------------------------------------------------------------------------
新建一个目录/文件夹.

DirCreate ( "路径" )

参数

路径 要创建的目录路径.



返回值

成功: 返回值为1.
失败: 返回值为0,说明在创建目录的过程中遇到错误.

注意/说明

在要创建的目录的父目录(上一级目录)不存在时,这些父目录也会被创建.

xiehuahere 发表于 2012-8-31 15:19:43

本帖最后由 xiehuahere 于 2012-8-31 15:27 编辑

我在想,那个DOS版的cmdhere是怎么实现的。

Windows Registry Editor Version 5.00

@="CMD here"

@="cmd.exe /k cd /d \"%1\""

通过右键菜单打开DOS窗口,DOS中显示的路径就直接是当前路径。
这里通过%1来获取第一个参数,如果能搞清楚这个参数是从哪里来的,问题就能解决了

魔导 发表于 2012-8-31 15:30:04

没搞懂   楼主的意思   当前目录   指的是脚本所在目录吗?
还是   用户正在打开的目录?

虎虎虎 发表于 2012-8-31 15:32:58

回复 6# 魔导

这个“当前目录”是指你说的后者。。

魔导 发表于 2012-8-31 15:57:22

回复魔导

这个“当前目录”是指你说的后者。。
虎虎虎 发表于 2012-8-31 15:32 http://www.autoitx.com/images/common/back.gif


    实现:在当前激活的文件夹中创建文件夹
   代码:HotKeySet("^e","a")
While 1
        Sleep(250)
WEnd
Func a()
$var = WinList()
For $i = 1 to $var
If 15 = WinGetState($var[$i]) Then
           DirCreate($var[$i]&'\写您要的文件名')
EndIf
Next
EndFunc
ps:BUG 未知   小弟自己没做过这方面的   希望可以帮助楼主

xiehuahere 发表于 2012-8-31 16:32:35

回复 8# 魔导

$var[$i] 是窗体标题,只有文件夹选项中设置了“在窗口标题显示全路径”才行。
否则就只是文件夹名称。

魔导 发表于 2012-8-31 16:49:15

回复魔导

$var[$i] 是窗体标题,只有文件夹选项中设置了“在窗口标题显示全路径”才行。
否则就只 ...
xiehuahere 发表于 2012-8-31 16:32 http://www.autoitx.com/images/common/back.gif


嗯,    确实是这样   刚好小弟的就是完整路径   代码得以实现
   还请前辈指教指教{:face (396):}

annybaby 发表于 2012-8-31 16:59:54

回复 8# 魔导

非常有创意的代码,学习了~~
很巧妙地将"标题"-->"路径"的问题解决了~~

xiehuahere 发表于 2012-8-31 17:20:44

本帖最后由 xiehuahere 于 2012-8-31 17:25 编辑

回复 1# 虎虎虎

一个看上去很无奈的方法,拷贝脚本自身到当前目录然后执行(不知道路径所以通过ctrl+v粘贴后回车执行,汗~!),再通过@ScriptDir获取当前路径。
很丑陋。仅供拓展一下思路:

#include <Misc.au3>

Local $RegKey = "HKEY_CURRENT_USER\Test", $RegFlag= "MyFlag", $RegPath = "CurrDIR"

If RegRead($RegKey, $RegFlag) == "" Then
        RegWrite($RegKey, $RegFlag, "REG_DWORD", 1)
        OnAutoItExitRegister("_Clean")
        $sArray = StringSplit(@AutoItExe, '\')
        $scriptName = $sArray[$sArray]
        HotKeySet("!d", "_NewDir")
        HotKeySet("{ESC}", "_Exit")
Else
        RegWrite($RegKey, $RegPath, "REG_SZ", @ScriptDir)
        Exit
EndIf

While 1
        Sleep(100)
        $val = RegRead($RegKey, $RegPath)
        If $val <> "" Then ;已获得当前路径
                      RegDelete($RegKey, $RegPath)
                $DATE = '\' & @YEAR & ' - ' & @MON & ' - ' & @MDAY
                DirCreate($val & '\' & $DATE)
                FileDelete($val & '\' & $scriptName)
        EndIf
WEnd

Func _NewDir()
        Local $size = FileGetSize(@AutoItExe)
        _ClipPutFile(@AutoItExe)
        Sleep(1000)
        WinActivate("")
        Send("^v")
        Sleep(2000) ;要等待脚本可执行文件拷贝完毕
        Send("{ENTER}")
EndFunc

Func _Clean()
        RegDelete($RegKey)
EndFunc

Func _Exit()
        Exit
EndFunc

afan 发表于 2012-8-31 18:41:18

这个不需要保持运行状态,直接发送到桌面快捷方式,设置快捷键。
以下脚本用Send即可简单实现,更多判断自行处理(比如是否有选择文件,如有则先取消选中)。If WinActive('') Or WinActive('') Then
        Sleep(200)
        Send('{APPSKEY}')
        Send('w{ENTER}')
EndIf

虎虎虎 发表于 2012-8-31 20:54:24

能否不用获取窗口的方式,有些局限,如果是【桌面】就不能认了,望高手提供思路。

liujiamir 发表于 2012-9-1 08:06:42

不会 帮顶。
页: [1] 2
查看完整版本: [已解决]怎样在“当前目录”新建文件夹?