[已解决]怎样在“当前目录”新建文件夹?
本帖最后由 虎虎虎 于 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%"
_FileAndDirCreate.au3呢? 本帖最后由 虎虎虎 于 2012-8-31 14:09 编辑
回复 2# menfan1
在这里:
http://www.autoitx.com/forum.php?mod=viewthread&tid=21226&highlight=%2Blixiaolong 函数参考
DirCreate
--------------------------------------------------------------------------------
新建一个目录/文件夹.
DirCreate ( "路径" )
参数
路径 要创建的目录路径.
返回值
成功: 返回值为1.
失败: 返回值为0,说明在创建目录的过程中遇到错误.
注意/说明
在要创建的目录的父目录(上一级目录)不存在时,这些父目录也会被创建. 本帖最后由 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来获取第一个参数,如果能搞清楚这个参数是从哪里来的,问题就能解决了 没搞懂 楼主的意思 当前目录 指的是脚本所在目录吗?
还是 用户正在打开的目录? 回复 6# 魔导
这个“当前目录”是指你说的后者。。 回复魔导
这个“当前目录”是指你说的后者。。
虎虎虎 发表于 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 未知 小弟自己没做过这方面的 希望可以帮助楼主 回复 8# 魔导
$var[$i] 是窗体标题,只有文件夹选项中设置了“在窗口标题显示全路径”才行。
否则就只是文件夹名称。 回复魔导
$var[$i] 是窗体标题,只有文件夹选项中设置了“在窗口标题显示全路径”才行。
否则就只 ...
xiehuahere 发表于 2012-8-31 16:32 http://www.autoitx.com/images/common/back.gif
嗯, 确实是这样 刚好小弟的就是完整路径 代码得以实现
还请前辈指教指教{:face (396):} 回复 8# 魔导
非常有创意的代码,学习了~~
很巧妙地将"标题"-->"路径"的问题解决了~~ 本帖最后由 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 这个不需要保持运行状态,直接发送到桌面快捷方式,设置快捷键。
以下脚本用Send即可简单实现,更多判断自行处理(比如是否有选择文件,如有则先取消选中)。If WinActive('') Or WinActive('') Then
Sleep(200)
Send('{APPSKEY}')
Send('w{ENTER}')
EndIf 能否不用获取窗口的方式,有些局限,如果是【桌面】就不能认了,望高手提供思路。 不会 帮顶。
页:
[1]
2