A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
はじめまして s0570063 さん
問題は解決しましたか?貴方のためにより良いスクリプトを作成しました。
以下のファイルひとつを作成すれば問題は解決します。
ただし前回同様
ファイル名を指定してください
originalfilename = "元のファイル名.xls"
監視時間を指定してください。単位はミリ秒です(1000=1秒)。
sleeptime = 10000
もしも監視場所がデスクトップ以外になりそうなら変更してください
directory = CreateObject("WScript.Shell").SpecialFolders("desktop")
↓このようにダブルコーテーションで囲んだパスにする
directory = "C:\Documents and Settings\user\デスクトップ"
[check2.vbs]
If LCase(Right(WScript.FullName,11))="wscript.exe" then
CreateObject("WScript.Shell").Run "cmd.exe /c start cscript """ & wscript.scriptfullname & """" ,,false
else
directory = CreateObject("WScript.Shell").SpecialFolders("desktop")
originalfilename = "元のファイル名.xls"
sleeptime = 10000
wscript.echo "Ctrlキー&Cキーを押すと停止します"
On Error Resume Next
do while 1
wscript.sleep sleeptime
wscript.echo date & time & "監視中"
For Each fl In CreateObject("Scripting.FileSystemObject").GetFolder(directory).Files
if instr(fl.Name,originalfilename) > 0 then
wscript.echo "新しいファイルを検知しました。DateTimeをつけリネームします"
de = split(date,"/"):te=split(time,":")
fl.Name = left(fl.Name,len(fl.Name)-4) & de(0) & de(1) & de(2) & "_" & te(0) & te(1) & ".xls"
end if
Next
loop
end if
実行してみましたか?vbs単品で前回と全く等価の処理となりました。
回答してから思い出しましたが何もbatでCscriptで起動せずともスクリプト自身から自分を判定させてCscriptじゃなければ自身をCscriptで起動すればよいですね。
それからデスクトップパスはfsoで取れましたね。ハードコーディングする意味は無かったですね(まぁハードコーディングの方が何が変数に格納されているかわかりやすいですが)。
処理違い・補足・追加処理等必要でしたらいってください。
No.6
- 回答日時:
はじめまして s0570063 さん
問題は解決しましたか?締め切っていないということはまだ解決していないのでしょう。貴方のためにスクリプトを作成しました。
必要なのは以下の二つをそれぞれの名前をつけデスクトップに保存し
batを起動するだけです。
これはタスクを使ったりしません。また起動すれば任意にとめない限りきちんと動き続けるでしょう(もちろんPCが落ちたらとまりますが)。
以下を回答として提示します。
VBSの中身のみ変更が必要です
貴方のデスクトップパスを指定してください
directory = "C:\Documents and Settings\user\デスクトップ"
ファイル名を指定してください
originalfilename = "元のファイル名.xls"
監視時間を指定してください。単位はミリ秒です(1000=1秒)。
sleeptime = 10000
[監視.bat]
cscript check.vbs
[check.vbs]
if not Right(WScript.FullName,11) = "cscript.exe" then msgbox("バッチから起動してください"):wscript.quit
directory = "C:\Documents and Settings\user\デスクトップ"
originalfilename = "元のファイル名.xls"
sleeptime = 10000
wscript.echo "Ctrlキー&Cキーを押すと停止します"
On Error Resume Next
do while 1
wscript.sleep sleeptime
wscript.echo date & time & "監視中"
For Each fl In CreateObject("Scripting.FileSystemObject").GetFolder(directory).Files
if instr(fl.Name,originalfilename) > 0 then
wscript.echo "新しいファイルを検知しました。DateTimeをつけリネームします"
de = split(date,"/"):te=split(time,":")
fl.Name = left(fl.Name,len(fl.Name)-4) & de(0) & de(1) & de(2) & "_" & te(0) & te(1) & ".xls"
end if
Next
loop
「監視.bat」を実行してください。
「元のファイル名.xls」という名前のファイルををデスクトップにおきます。すると上記のデフォルト設定ならば10秒後勝手にリネームされましたね?
これで貴方は任意の名前のファイルを自動で監視しファイルが来れば自動でリネームするスクリプトを得ました。
処理違い・補足・追加処理等必要でしたらいってください。
No.5
- 回答日時:
#4の続報です。
他アプリが生成するファイルを、実行時の年月時分の名前に付け替えて複写します。ウィルス対策ソフトのスクリプトに対するプロテクトを無効にできるなら、1日以上は動くと思います。日をまたぐ部分は未確認です。Dim objWMIService
Dim strComputer
Dim errJobCreated, JobId
Dim objNewJob
Dim timeSettingString
Dim myTask
Dim objFSO
dim strDestFile
dim strPath
strPath = "C:\Documents and Settings\?????\デスクトップ\"
Set objFSO = CreateObject("Scripting.FileSystemObject")
strDestFile = Right("0" & Month(Now), 2) & Right("0" & Day(Now), 2) & Right("0" & Hour(Now), 2) & Right("0" & minute(Now), 2) & ".xls"
objFSO.CopyFile strPath & "他アプリが生成するファイル.xls",strPath & strDestFile
myTask = "taskTest.vbs" 'このスクリプトの名前、System32に置く
timeSettingString = "********" & Right("0" & Hour(Now), 2) & Right("0" & minute(Now), 2) & "00.000000+560"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create(myTask, timeSettingString, False, , , , JobId)
Set objNewJob = Nothing
Set objWMIService = Nothing
No.4
- 回答日時:
実用的かどうか大変疑問ですが、ファイルを複写して、自分自身の実行をタスクスケジューラで20分後に設定するスクリプトです。
Windows2000での試行です。(問題点)
1.FSOがウィルス対策ソフトにひっかかる
2.タスクの番号がどんどん増えていくので、どこかでエラーになるかも
3.日をまたぐ対策を取ってない
'タスクスケジューラで、詳細設定/ATサービスのアカウント/システムに設定しておく必要がある
Dim objWMIService
Dim strComputer
Dim errJobCreated, JobId
Dim objNewJob
Dim timeSettingString
Dim myTask
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "C:\Documents and Settings\?????\デスクトップ\src.xls","C:\Documents and Settings\?????\デスクトップ\dest.xls"
myTask = "taskTest.vbs" 'このスクリプトの名前、Windows2000の場合、System32に置く
'local timeへの変換のための540 + 実行間隔20 -> 560
timeSettingString = "********" & Right("0" & Hour(Now), 2) & Right("0" & minute(Now), 2) & "00.000000+560"
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create(myTask, timeSettingString, False, , , , JobId)
'for Debug
'If errJobCreated = 0 Then
' wscript.echo "登録しました。" & vbCrLf & "ジョブID:" & JobId
'Else
' wscript.echo "登録に失敗しました。"
'End If
Set objNewJob = Nothing
Set objWMIService = Nothing
No.3
- 回答日時:
ANo.2です。
>マクロで出来れば1番よいと考えていましたが
>ありませんでしたのでC++の利用を考えました。
一番はデスクトップにファイルを書き出す際に、ファイル名に日付と時間を利用して
重複しないファイル名をつけていけば上書きされないです。
そのファイルに手を加えられないのであれば、別の方法で同じ事をするしかないかと。
と言ってもC++はわからないんです。
No.2
- 回答日時:
ANo.1です。
>visual C++を利用しようと考えております。
Excelについての質問ではないようですね。
C++は未経験ですが、20分おきにExcelファイルが出来上がるのなら、
20分おきにファイルの有無を確認してもしファイルがあれば、どこかのフォルダに
移動してリネーム(日付と時間を利用)していけばいいのでは?
と思いますけど。
この回答への補足
マクロで出来れば1番よいと考えていましたが
ありませんでしたのでC++の利用を考えました。
利用目的の関係上、24時間の記録が必要ですので
自動でリネームをする必要があるのです・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Excel(エクセル) エクセル VBAでBook モジュールのプロシージァ(コード)に除外シートを設定したい 1 2023/01/11 15:53
- Excel(エクセル) Excelシフト表 固定シフトの自動変換化 1 2022/04/14 16:10
- その他(Microsoft Office) Excel、Wordのファイル 3 2023/05/07 04:58
- Excel(エクセル) 3つのエクセルをそれぞれのシートのセルに反映させたいときはどうしたらいいでしょうか? 例えば①シート 4 2023/04/25 20:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) iphonからone driveに保存してあるExcelを閲覧すると表示の仕方がちがうデータ 2 2022/12/21 13:51
- Windows 7 ショートカットキー 応用編 どういうの主に使いますか? 2 2022/12/28 23:46
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
[DOS] コピー先に同じファイル...
-
.batでファイル名から抽出して...
-
【vbs】ファイル名の検索と該当...
-
バッチコマンドでファイル名の...
-
ExcelVBAのDirでスペース含むフ...
-
コマンドプロンプトで変数が数...
-
コマンドプロンプトでファイル...
-
■ファイルのリネーム(rename)...
-
コマンドでファイルコピーする...
-
サブフォルダからファイルをコ...
-
バッチファイルで、ファイル名...
-
gnuplotで日本語を含むepsファ...
-
テキストファイルのファイル名...
-
【Access】エクスポート時のフ...
-
バッチファイルで、iniファイル...
-
エクセルの名前を自動で変更
-
コマンドプロンプトまたはpower...
-
ファイル名に ” を使うと エク...
-
AIX kshスクリプトのtar+compre...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトで変数が数...
-
コマンドプロンプトでファイル...
-
バッチファイルで、iniファイル...
-
[DOS] コピー先に同じファイル...
-
バッチコマンドでファイル名の...
-
ftp処理でmove(移動)を行いたい
-
access,vbaでフォルダ内のファ...
-
ExcelVBAのDirでスペース含むフ...
-
フォルダ内の更新日時が一番新...
-
DOSのバッチ作成について‐FORの...
-
word VBA ファイル名 保存
-
ファイル名に ” を使うと エク...
-
.batでファイル名から抽出して...
-
ファイル名を該当フォルダ内か...
-
サブフォルダからファイルをコ...
-
【vbs】ファイル名の検索と該当...
-
【DOSバッチ開発】末尾のタブの...
-
VBA GetAttrについて教えてくだ...
-
バッチ処理で16進数でファイル...
おすすめ情報